Junior — Middle
Hoe kan het feit worden vastgesteld dat een bericht in Kafka is gelezen?
sobes.tech AI
Antwoord van AI
In Kafka wordt het feit dat een bericht is gelezen bepaald door offsets in de partitions van het topic. Elke consumer houdt bij tot welk offset hij in elke partition heeft gelezen.
Om te bepalen dat een bericht is gelezen, moet je:
- Zekerstellen dat de consumer het bericht succesvol heeft verwerkt.
- De offset van dat bericht bevestigen (commit) in Kafka, oftewel de broker informeren dat alle berichten tot dat offset zijn verwerkt.
In Go, met een Kafka-client (bijvoorbeeld sarama of confluent-kafka-go), kun je expliciet offsets bevestigen na het verwerken van berichten. Als de offset is bevestigd, wordt het bericht als gelezen beschouwd en wordt het niet opnieuw geleverd aan deze consumer.
Voorbeeld met sarama (vereenvoudigd):
consumer.MarkMessage(msg, "") // Markeer het bericht als gelezen
consumer.CommitOffsets() // Bevestig de offsets
Op deze manier is het feit dat een bericht is gelezen, een succesvolle commit van de offset in Kafka.