Junior — Middle
Jak lze určit, že zpráva byla přečtena v Kafka?
sobes.tech AI
Odpověď od AI
Ve Kafka je fakt, že byla zpráva přečtena, určován pomocí offsetů v partitionech tématu. Každý spotřebič (consumer) sleduje, do jakého offsetu přečetl zprávy v každé partition.
Aby bylo možné určit, že zpráva byla přečtena, je třeba:
- Ujistit se, že spotřebič úspěšně zpracoval zprávu.
- Potvrdit (commit) offset této zprávy v Kafka, tj. informovat broker, že všechny zprávy do tohoto offsetu byly zpracovány.
V Go, s použitím klienta Kafka (například sarama nebo confluent-kafka-go), lze explicitně potvrdit offsety po zpracování zpráv. Pokud je offset potvrzen, považuje se za přečtený a nebude mu znovu doručován tento spotřebič.
Příklad s sarama (zjednodušený):
consumer.MarkMessage(msg, "") // Označit zprávu jako přečtenou
consumer.CommitOffsets() // Potvrdit offsety
Tímto způsobem je fakt, že zpráva byla přečtena, úspěšný commit offsetu v Kafka.