Projet Exemple : Spring Boot + Kafka + Camunda 8

Les architectures modernes basées sur les microservices reposent fortement sur une communication orientée événements. Dans cet article, nous allons construire un exemple concret de projet combinant :

  • Spring Boot

  • Apache Kafka

  • Camunda 8

Ce projet démontre comment :

  • Démarrer un workflow Camunda à partir d’un événement Kafka

  • Publier des événements Kafka depuis un processus Camunda

  • Gérer l’orchestration asynchrone

  • Maintenir une architecture propre et découplée


🎯 Cas d’usage : Système de traitement de commandes

Scénario :

  1. Un service de commandes publie un événement dans Kafka.

  2. Un consommateur Kafka reçoit l’événement.

  3. Camunda 8 démarre un workflow.

  4. Le workflow déclenche un service de paiement.

  5. Le résultat du paiement est publié dans Kafka.

  6. Camunda corrèle le message et termine le processus.


🏗 Vue d’ensemble de l’architecture


Composants :

  • Application Spring Boot

  • Broker Kafka

  • Camunda 8 (Zeebe)

  • Worker Paiement


🛠 Étape 1 : Configuration du projet

Créer un projet Spring Boot avec :

Dépendances nécessaires :

  • Spring Web

  • Spring Kafka

  • Client Zeebe (Camunda 8)

  • Lombok


📦 Dépendances Maven

<dependency> <groupId>io.camunda</groupId> <artifactId>zeebe-client-java</artifactId> <version>8.x.x</version> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency>

🚀 Étape 2 : Lancer Camunda 8 en local

Utiliser Docker :

docker compose up

Ou se connecter à Camunda SaaS.


📨 Étape 3 : Producteur Kafka (Événement Commande)

@Service @RequiredArgsConstructor public class OrderProducer { private final KafkaTemplate<String, String> kafkaTemplate; public void envoyerCommande(String orderJson) { kafkaTemplate.send("commande-creee", orderJson); } }

📥 Étape 4 : Consommateur Kafka → Démarrer le processus Camunda

@KafkaListener(topics = "commande-creee") public void consommer(String message) { zeebeClient.newCreateInstanceCommand() .bpmnProcessId("order-process") .latestVersion() .variables(message) .send() .join(); }

Cela démarre le workflow.


📊 Étape 5 : Modèle BPMN

Flux BPMN simple:


Type de tâche : process-payment


🔄 Étape 6 : Job Worker → Publier événement Paiement

@JobWorker(type = "process-payment") public void traiterPaiement(ActivatedJob job) { kafkaTemplate.send("paiement-demande", job.getVariables()); jobClient.newCompleteCommand(job.getKey()) .send() .join(); }

🔔 Étape 7 : Service Paiement → Publier Résultat

@KafkaListener(topics = "paiement-demande") public void processPayment(String message) { kafkaTemplate.send("paiement-termine", message); }

🔗 Étape 8 : Kafka → Corrélation du message dans Camunda

@KafkaListener(topics = "paiement-termine") public void correlater(String message) { zeebeClient.newPublishMessageCommand() .messageName("PaiementTermine") .correlationKey(extractOrderId(message)) .variables(message) .send() .join(); }

⚠ Considérations importantes en production

1️⃣ Idempotence

Kafka peut livrer des messages en double.

Toujours :

  • Utiliser une clé métier unique (orderId)

  • Éviter les doublons de processus


2️⃣ Gestion des retries

Utiliser :

  • Retry Zeebe

  • Retry Kafka

  • Dead Letter Topic


3️⃣ Monitoring

Surveiller :

  • Lag Kafka

  • Backpressure Zeebe

  • Taux d’échec des workers


🧠 Pourquoi cette architecture fonctionne ?

  • Kafka gère les événements à haut volume.

  • Camunda orchestre la logique métier.

  • Spring Boot structure les services.

  • Chaque composant peut être scalé indépendamment.

C’est une architecture moderne adaptée aux environnements :

  • FinTech

  • E-commerce

  • Logistique

  • SaaS d’entreprise


💼 Support professionnel disponible

Si vous rencontrez des problèmes sur des projets réels liés au développement backend d’entreprise ou à l’automatisation des workflows, je propose des services de conseil payants, de débogage en production, de support projet et de formations ciblées.

Les technologies couvertes incluent Java, Spring Boot, PL/SQL, Azure, ainsi que l’automatisation des workflows (jBPM, Camunda BPM, RHPAM).

📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com

🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium     


Comments

Popular posts from this blog

Scopes of Signal in jBPM

OOPs Concepts in Java | English | Object Oriented Programming Explained

jBPM Installation Guide: Step by Step Setup