Envoi & Consommation de messages Kafka

Produire et lire des messages, garantir l’ordre et comprendre la logique de routage.

Contexte

Dans une architecture orientée événements, savoir envoyer et lire des messages est essentiel. Un microservice producteur (ex : Commandes) génère des événements, tandis qu’un autre microservice consommateur (ex : Facturation) les lit pour déclencher des actions métiers.

Lexique

Producteur

Application qui envoie les messages dans un topic.

Consommateur

Application qui lit les messages publiés.

Clé

Identifiant utilisé pour décider dans quelle partition un message est stocké.

Partition

Unité de parallélisme ; messages d’une même clé → même partition.

[private role= »access_springboot »]

Schéma d’envoi & de consommation

Envoi et consommation Kafka

Exemple d’interaction entre un producteur et un consommateur Kafka.

Commandes pratiques

# Producteur avec clé
bin/kafka-console-producer.sh \
  --bootstrap-server localhost:9092 \
  --topic commandes.ecommerce \
  --property parse.key=true \
  --property "key.separator=:"

# Consommateur affichant clé et partition
bin/kafka-console-consumer.sh \
  --bootstrap-server localhost:9092 \
  --topic commandes.ecommerce \
  --from-beginning \
  --property print.key=true \
  --property print.partition=true
    
Bonnes pratiques :
  • Utilisez toujours une clé logique (clientId, orderId) pour garantir l’ordre.
  • Évitez de mélanger des événements différents dans un même topic.
  • Assurez-vous que vos messages ont un schéma clair et versionné (Avro, JSON Schema, Protobuf).
  • Gardez les messages petits et réguliers (~< 1 Mo) pour optimiser le débit.

Résultats attendus

  • Le producteur envoie un message avec une clé (ex : client1:commande123).
  • Le consommateur affiche la clé + la partition.
  • Les messages ayant la même clé arrivent toujours sur la même partition.

Erreurs fréquentes à éviter

  • Envoyer des messages sans clé → perte d’ordre et répartition aléatoire.
  • Mélanger plusieurs formats de message dans le même topic.
  • Créer un consumer sans gérer l’offset (risque de doublons).
  • Produire en rafale sans gérer les ACK → risque de perte de messages.

Quiz

Question : Que se passe-t-il si deux messages ont la même clé ?

  • A. Ils sont envoyés à deux partitions différentes
  • B. Ils sont envoyés à la même partition ✔
  • C. Kafka renvoie une erreur

Exercice

Envoyez 5 messages avec 3 clés différentes. Observez dans le consommateur la partition de chaque message. Vérifiez que les clés identiques sont toujours routées vers la même partition.

Résumé

Ce chapitre vous a montré comment produire et consommer des messages Kafka en utilisant des clés. Le mécanisme de répartition garantit la cohérence, la scalabilité et la logique de traitement côté consommateurs. C’est l’un des piliers des architectures orientées événements.

[/private]

Navigation