Junior — Middle
Hogyan lehet meghatározni, hogy egy üzenetet olvastak-e Kafka-ban?
sobes.tech MI
Válasz az MI-től
A Kafka-ban a beolvasott üzenet tényét a téma partícióiban lévő eltolások (offsets) határozzák meg. Minden fogyasztó (consumer) nyomon követi, hogy melyik eltolásig olvasta az üzeneteket minden partíciónál.
Az, hogy egy üzenet olvasott, akkor állapítható meg, ha:
- Biztosítjuk, hogy a fogyasztó sikeresen feldolgozta az üzenetet.
- Megerősítjük (commit) ennek az üzenetnek az eltolását Kafka-ban, azaz értesítjük a brokert, hogy minden üzenet az adott eltolásig feldolgozásra került.
Go-ban, Kafka kliens (pl. sarama vagy confluent-kafka-go) használatával, explicit módon megerősíthetjük az eltolásokat az üzenetek feldolgozása után. Ha az eltolás megerősítésre került, az üzenet olvasottnak számít, és nem lesz újra kézbesítve ehhez a fogyasztóhoz.
Példa sarama-val (egyszerűsített):
consumer.MarkMessage(msg, "") // Üzenet megjelölése olvasottként
consumer.CommitOffsets() // Eltolások megerősítése
Így az üzenet olvasottsága sikeres eltolás-commit a Kafka-ban.