feat: Pulsar distribution service (Simulator → Pulsar → Brokers)
- Fix Pulsar: use binary client (port 6650) instead of non-existent REST /produce API - Add pulsar-client to Dockerfile - Create pulsar/distribution.py: consumes Pulsar and republishes to MQTT (EMQX/Mosquitto), NGSI-LD (Orion/Stellio), FROST - Add docker-compose.distribution.yml for the distribution service - Tested: Messages successfully distributed to EMQX and Orion-LD - Update session resume
This commit is contained in:
73
session_resume_2026-05-05-afternoon.md
Normal file
73
session_resume_2026-05-05-afternoon.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# Session Resume — 05 Mai 2026 (Suite)
|
||||
|
||||
## ✅ Réalisé dans cette session
|
||||
|
||||
### 1. Correction critique Pulsar
|
||||
- **Problème** : API REST `/produce` inexistante en Pulsar standalone → 404
|
||||
- **Solution** : Installé `pulsar-client` Python dans le simulateur + modifié `publish_pulsar()` pour utiliser le client binaire (port 6650)
|
||||
- **Dockerfile** : Ajout de `pulsar-client` dans les dépendances
|
||||
- **Résultat** : `🌀 Pulsar: ✅` dans les logs simulateur
|
||||
|
||||
### 2. Service de distribution Pulsar → Brokers
|
||||
- **Création** : `pulsar/distribution.py` — Consomme Pulsar et republie vers :
|
||||
- **MQTT** : EMQX (`emqx_emqx_1:1883`) + Mosquitto (`mosquitto-traefik:1883`)
|
||||
- **NGSI-LD** : Orion-LD (`fiware-gis-quickstart-orion-1:1026`) + Stellio (`stellio-api-gateway:8080`)
|
||||
- **OGC SensorThings** : FROST Server (`frost-api-8090:8080`)
|
||||
- **Docker** : `pulsar/Dockerfile` + `docker-compose.distribution.yml`
|
||||
- **Testé** : Messages distribués avec succès (MQTT reçu, entités Orion-LD créées)
|
||||
|
||||
### 3. Architecture mise en place
|
||||
```
|
||||
Simulateur → Pulsar (port 6650)
|
||||
↓
|
||||
Pulsar Distribution Service
|
||||
↓
|
||||
┌─────────────┼─────────────┐
|
||||
↓ ↓ ↓
|
||||
MQTT Brokers NGSI-LD FROST
|
||||
(EMQX+ Brokers (OGC
|
||||
Mosquitto) (Orion+ SensorThings)
|
||||
Stellio)
|
||||
```
|
||||
|
||||
## ⚠️ Problèmes rencontrés
|
||||
|
||||
### Redpanda (Kafka-compatible)
|
||||
- **Status** : ❌ Toujours crashé (exit 1)
|
||||
- **Cause** : Commande `rpk redpanda start` échoue (le flag `--mode dev` n'existe pas dans v24.3.14)
|
||||
- **Tentatives** :
|
||||
- Enlèvement de `--mode dev` → toujours crash
|
||||
- Exécution manuelle → affiche l'aide (commande invalide)
|
||||
- **Décision** : Laisser de côté pour l'instant, Pulsar suffit pour l'ingestion
|
||||
|
||||
## 📊 État des services
|
||||
|
||||
| Service | Status | Notes |
|
||||
|---------|--------|-------|
|
||||
| Simulateur | ✅ Actif (1s) | Pulsar OK, MQTT/Brokers désactivables |
|
||||
| Pulsar | ✅ Fonctionnel | Client binaire 6650 OK |
|
||||
| Pulsar Distribution | ✅ Actif | Republie vers tous les brokers |
|
||||
| EMQX (MQTT) | ✅ Reçoit | Via distribution Pulsar |
|
||||
| Orion-LD (NGSI-LD) | ✅ Reçoit | Entités AirQuality créées |
|
||||
| Stellio (NGSI-LD) | ⚠️ À vérifier | Via distribution |
|
||||
| FROST (OGC) | ⚠️ À vérifier | Via distribution |
|
||||
| Redpanda | ❌ Crash | Problème de démarrage RPK |
|
||||
| InfluxDB | ✅ Actif | Via simulateur direct |
|
||||
| Grafana | ⚠️ No Data | Dashboards à configurer |
|
||||
|
||||
## 📋 Prochaines étapes
|
||||
|
||||
1. **Vérifier Stellio + FROST** via distribution Pulsar
|
||||
2. **Désactiver l'envoi direct** du simulateur vers les brokers (pour respecter l'architecture)
|
||||
3. **Configurer Grafana** avec datasources InfluxDB + Pulsar/FROST
|
||||
4. **Remplacer Redpanda** par Kafka simple ou résoudre le problème
|
||||
|
||||
## 🔗 URLs importantes
|
||||
|
||||
- **Pulsar Distribution logs** : `docker logs smart-city-pulsar-distribution --tail 50`
|
||||
- **Grafana** : https://grafana.digitribe.fr/d/smartcity-martinique-2026
|
||||
- **Orion-LD entities** : `curl http://localhost:2026/ngsi-ld/v1/entities`
|
||||
- **Gitea** : https://gitea.digitribe.fr/eric/smart-city-digital-twin-martinique
|
||||
|
||||
---
|
||||
*Session en cours — Pulsar Distribution opérationnel*
|
||||
Reference in New Issue
Block a user