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.