# Scripts Kafka pour UnionFlow ## Problème résolu Les erreurs `UNKNOWN_TOPIC_OR_PARTITION` apparaissent car **les topics Kafka n'existent pas encore**. Ton Kafka actuel (conteneur `kafka` sur port 9092) fonctionne parfaitement. Il faut juste créer les 5 topics. --- ## ✅ Solution : Créer les Topics ### Option 1 : Exécuter le script (Recommandé) #### Windows (PowerShell ou CMD) ```cmd cd C:\Users\dadyo\PersonalProjects\lions-workspace\unionflow\scripts\kafka create-topics.bat ``` #### Linux/Mac ```bash cd /path/to/unionflow/scripts/kafka chmod +x create-topics.sh ./create-topics.sh ``` ### Option 2 : Commandes manuelles (si le script échoue) Copie-colle ces commandes une par une dans PowerShell/CMD : ```cmd docker exec kafka /opt/kafka/bin/kafka-topics.sh --create --topic unionflow.finance.approvals --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 --if-not-exists docker exec kafka /opt/kafka/bin/kafka-topics.sh --create --topic unionflow.dashboard.stats --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 --if-not-exists docker exec kafka /opt/kafka/bin/kafka-topics.sh --create --topic unionflow.notifications.user --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 --if-not-exists docker exec kafka /opt/kafka/bin/kafka-topics.sh --create --topic unionflow.members.events --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 --if-not-exists docker exec kafka /opt/kafka/bin/kafka-topics.sh --create --topic unionflow.contributions.events --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 --if-not-exists ``` --- ## 🔍 Vérification des Topics ### Lister tous les topics ```cmd docker exec kafka /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092 ``` Résultat attendu : ``` unionflow.contributions.events unionflow.dashboard.stats unionflow.finance.approvals unionflow.members.events unionflow.notifications.user ``` ### Voir les détails d'un topic ```cmd docker exec kafka /opt/kafka/bin/kafka-topics.sh --describe --topic unionflow.finance.approvals --bootstrap-server localhost:9092 ``` --- ## 📊 Topics Créés | Topic | Partitions | Replication | Usage | |-------|------------|-------------|-------| | `unionflow.finance.approvals` | 3 | 1 | Workflow approbations financières | | `unionflow.dashboard.stats` | 3 | 1 | Mise à jour stats dashboard | | `unionflow.notifications.user` | 3 | 1 | Notifications utilisateurs | | `unionflow.members.events` | 3 | 1 | Events création/modification membres | | `unionflow.contributions.events` | 3 | 1 | Events paiements cotisations | **Partitions** : 3 pour parallélisme (peut augmenter en prod si besoin) **Replication** : 1 (développement single-node) --- ## 🧪 Tester la Configuration ### 1. Publier un message de test ```cmd docker exec -it kafka /opt/kafka/bin/kafka-console-producer.sh --topic unionflow.finance.approvals --bootstrap-server localhost:9092 ``` Tape un message JSON et appuie sur Entrée : ```json {"eventType":"TEST","timestamp":"2026-03-14T19:00:00Z","data":{"message":"test"}} ``` Ctrl+C pour quitter. ### 2. Consommer les messages ```cmd docker exec -it kafka /opt/kafka/bin/kafka-console-consumer.sh --topic unionflow.finance.approvals --bootstrap-server localhost:9092 --from-beginning ``` Tu devrais voir le message de test. Ctrl+C pour quitter. --- ## ✅ Résultat Attendu Après création des topics, redémarre le backend Quarkus : ```bash cd unionflow-server-impl-quarkus ./mvnw quarkus:dev ``` Les erreurs `UNKNOWN_TOPIC_OR_PARTITION` **disparaîtront** et tu verras : ``` ✅ Kafka consumers started successfully ✅ Connected to topics: unionflow.finance.approvals, unionflow.dashboard.stats, ... ``` --- ## ❓ FAQ ### Puis-je supprimer mon Kafka actuel ? **NON !** Ton Kafka actuel est parfait. Garde-le. Il manque juste les topics. ### Dois-je utiliser docker-compose ? Non, ton setup actuel (conteneur `kafka` standalone) fonctionne très bien pour le développement. ### En production ? En production (Kubernetes), les topics seront créés automatiquement par le backend au démarrage (via `auto.create.topics.enable=true` dans Kafka) ou via Helm charts. --- ## 🚀 Après Création des Topics 1. **Redémarrer backend Quarkus** : `./mvnw quarkus:dev` 2. **Lancer mobile** : `flutter run --dart-define=ENV=dev` 3. **Tester WebSocket** : Publier un event via Swagger UI → vérifier réception mobile --- **Status** : ✅ Topics créés → Backend connecté → WebSocket fonctionnel