Sobes.tech
Junior — Middle

Kaip galima nustatyti, ar pranešimas buvo perskaitytas Kafka?

sobes.tech AI

Atsakymas iš AI

Kafka faktas, kad žinutė buvo perskaityta, nustatomas naudojant poslinkius (offsets) temos partitionuose. Kiekvienas vartotojas (consumer) stebi, iki kurio poslinkio jis perskaitė žinutes kiekviename partitione.

Norint nustatyti, kad žinutė buvo perskaityta, reikia:

  • Užtikrinti, kad vartotojas sėkmingai apdorotų žinutę.
  • Patvirtinti (commit) šios žinutės poslinkį Kafka, t.y., pranešti brokeriui, kad visi iki šio poslinkio buvę žinutės yra apdorotos.

Go kalboje, naudojant Kafka klientą (pvz., sarama ar confluent-kafka-go), galima aiškiai patvirtinti poslinkius po žinučių apdorojimo. Jei poslinkis patvirtintas, žinutė laikoma perskaityta ir nebus dar kartą pristatyta šiam vartotojui.

Pavyzdys su sarama (supaprastintas):

consumer.MarkMessage(msg, "") // Pažymėti žinutę kaip perskaitytą
consumer.CommitOffsets()       // Patvirtinti poslinkius

Taip, faktas, kad žinutė buvo perskaityta, yra sėkmingas poslinkio įrašymas Kafka.