Les consommateurs Kafka doivent être idempotents même lorsque vous entendez 'Exactement une fois'_
La sémantique d'exactement une fois dans Kafka est plus étroite que ce que de nombreuses équipes supposent. L'idempotence côté consommateur est toujours la conception la plus sûre pour les effets secondaires.
Si un consommateur Kafka déclenche un effet secondaire, supposez que des doublons sont possibles tant que vous n'avez pas prouvé le contraire.
C'est le défaut le plus sûr.
Kafka possède des fonctionnalités d'exactement une fois, mais les ingénieurs ont souvent tendance à surinterpréter ce que ces garanties couvrent. Elles aident beaucoup dans le modèle de traitement propre à Kafka. Elles ne rendent pas magiquement chaque écriture dans une base de données en aval ou chaque appel d'API externe exempt de doublons.
Le problème du consommateur
Le modèle risqué ressemble à ceci :
consommer le message
mettre à jour la base de données
accuser réception du progrès
Si le service se bloque entre les étapes, une relecture peut se produire.
Ce n'est pas Kafka qui est cassé. C'est un comportement normal des systèmes distribués en cas de défaillance.
Utilisez une clé d'idempotence
Chaque événement qui peut déclencher un effet secondaire doit porter un identifiant stable :