Sobes.tech
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.