Kako Kafka potrošač čuva svoju poziciju u toku podataka?
sobes.tech АИ
Одговор од АИ
U Apache Kafka, potrošač čuva svoju poziciju u toku podataka pomoću pomaka (offsets). Offset je redni broj poruke u particiji teme.
Potrošač povremeno potvrđuje (commit) trenutni offset, kako bi prilikom ponovnog pokretanja ili kvara mogao da nastavi čitanje sa pravog mesta. Commit može biti automatski (auto-commit) ili ručni.
U Kafka klijentima za Go (npr. sarama), offset se obično čuva u posebnoj temi __consumer_offsets, koju upravlja Kafka. To omogućava više potrošača u grupi da koordiniraju čitanje i garantuju da je svaka poruka obrađena tačno jednom.
Primer ručnog commit-a offset-a u Go koristeći sarama:
partitionConsumer, _ := consumer.ConsumePartition(topic, partition, sarama.OffsetNewest)
for msg := range partitionConsumer.Messages() {
// obrada poruke
fmt.Println(string(msg.Value))
// commit offset-a
consumer.MarkOffset(msg, "")
}
Tako je pozicija potrošača u toku poslednji potvrđeni offset, koji se čuva u Kafka i omogućava nastavak čitanja sa pravog mesta.