Sobes.tech
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.