Sobes.tech
Junior — Middle

Kuidas saab määrata, kas sõnum on Kafka's loetud?

sobes.tech AI

Vastus AI-lt

Kafka puhul määratakse lugemise fakt faktide abil, mis on seotud teema partitionidesse salvestatud offsetidega. Iga tarbija (consumer) jälgib, kuni millise offsetini ta on iga partitioni lugenud.

Et määrata, et sõnum on loetud, tuleb:

  • Veenduda, et tarbija on sõnumi edukalt töötlenud.
  • Kinnitada (commit) selle sõnumi offset Kafka-s, st teavitada brokerit, et kõik selle offseti eelnevad sõnumid on töödeldud.

Go-s, kasutades Kafka klienti (nt sarama või confluent-kafka-go), saab selgelt kinnitada offsetid pärast sõnumite töötlemist. Kui offset on kinnitatud, loetakse sõnum loetud ja see ei tohi seda tarbijat uuesti toimetada.

Näide sarama-ga (lihtsustatud):

consumer.MarkMessage(msg, "") // Märgi sõnum loetuks
consumer.CommitOffsets()       // Kinnita offsetid

Seega on fakt, et sõnum on loetud, edukas offseti kinnitamine Kafka-s.