Sobes.tech
Junior — Middle

Comment peut-on déterminer le fait qu'un message a été lu dans Kafka?

sobes.tech IA

Réponse de l'IA

En Kafka, le fait qu’un message ait été lu est déterminé par des décalages (offsets) dans les partitions du topic. Chaque consommateur (consumer) suit jusqu’à quel décalage il a lu dans chaque partition.

Pour déterminer qu’un message a été lu, il faut:

  • S’assurer que le consommateur a traité le message avec succès.
  • Confirmer (commit) le décalage de ce message dans Kafka, c’est-à-dire informer le broker que tous les messages jusqu’à ce décalage ont été traités.

En Go, en utilisant un client Kafka (par exemple, sarama ou confluent-kafka-go), il est possible de confirmer explicitement les décalages après le traitement des messages. Si le décalage est confirmé, cela signifie que le message est considéré comme lu et ne sera pas livré à nouveau à ce consommateur.

Exemple avec sarama (simplifié):

consumer.MarkMessage(msg, "") // Marquer le message comme lu
consumer.CommitOffsets()       // Confirmer les décalages

Ainsi, le fait que le message ait été lu est une confirmation réussie du décalage dans Kafka.