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
Application qui envoie les messages dans un topic.
Application qui lit les messages publiés.
Identifiant utilisé pour décider dans quelle partition un message est stocké.
Unité de parallélisme ; messages d’une même clé → même partition.
Schéma d’envoi & de consommation
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
- 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.
