Sobes.tech
Junior — Middle

Kā var noteikt, vai ziņa ir izlasīta Kafka?

sobes.tech AI

Atbilde no AI

Kafka gadījums, kad ziņa ir izlasīta, tiek noteikts, izmantojot novirzes (offsets) tēmas daļās. Katrs patērētājs (consumer) seko līdzi tam, līdz kuram novirzes līmenim viņš ir izlasījis ziņas katrā daļā.

Lai noteiktu, ka ziņa ir izlasīta, ir jā:

  • Pārliecinieties, ka patērētājs veiksmīgi ir apstrādājis ziņu.
  • Apstiprināt (commit) šīs ziņas novirzi Kafka, tas ir, informēt brokeri, ka visas ziņas līdz šai novirzei ir apstrādātas.

Go valodā, izmantojot Kafka klientu (piemēram, sarama vai confluent-kafka-go), var tieši apstiprināt novirzes pēc ziņu apstrādes. Ja novirze ir apstiprināta, tā tiek uzskatīta par izlasītu un šim patērētājam tā vairs netiks piegādāta.

Piemērs ar sarama (vienkāršots):

consumer.MarkMessage(msg, "") // Atzīmēt ziņu kā izlasītu
consumer.CommitOffsets()       // Apstiprināt novirzes

Tādējādi fakts, ka ziņa ir izlasīta, ir veiksmīgs novirzes apstiprinājums Kafka.