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



Cette architecture est couramment utilisée dans les environnements microservices modernes.

👉 environnements microservices modernes


🎯 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     


🎥 Learn IT with Shikha on YouTube

Prefer learning through videos? Watch practical tutorials on Kafka, Camunda, Alfresco, Java, Spring Boot, Microservices and Enterprise Architecture.

▶ Subscribe to Learn IT with Shikha on YouTube

Comments

Popular posts from this blog

Top 50 Camunda BPM Interview Questions and Answers for Developers (2026 Guide)

10 BPMN Best Practices Every Camunda Developer Should Know

OOPs Concepts in Java | English | Object Oriented Programming Explained