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:
Eric FELIXINE
2026-05-05 10:20:13 -04:00
parent 5ddde3e013
commit ad613beefb
11 changed files with 444 additions and 20 deletions

View 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*