Sobes.tech
Junior — Middle

Wie kann man feststellen, ob eine Nachricht in Kafka gelesen wurde?

sobes.tech KI

Antwort von AI

In Kafka wird die Tatsache, dass eine Nachricht gelesen wurde, durch Offsets in den Partitionen des Themas bestimmt. Jeder Verbraucher (Consumer) verfolgt, bis zu welchem Offset er in jeder Partition gelesen hat.

Um festzustellen, dass eine Nachricht gelesen wurde, muss man:

  • Sicherstellen, dass der Verbraucher die Nachricht erfolgreich verarbeitet hat.
  • Das Offset dieser Nachricht in Kafka bestätigen (commit), also dem Broker mitteilen, dass alle Nachrichten bis zu diesem Offset verarbeitet wurden.

In Go, mit einem Kafka-Client (z.B. sarama oder confluent-kafka-go), kann man die Offsets nach der Verarbeitung der Nachrichten explizit bestätigen. Wenn das Offset bestätigt ist, gilt die Nachricht als gelesen und wird diesem Verbraucher nicht erneut zugestellt.

Beispiel mit sarama (vereinfachte Version):

consumer.MarkMessage(msg, "") // Nachricht als gelesen markieren
consumer.CommitOffsets()       // Offsets bestätigen

Auf diese Weise ist die Tatsache, dass eine Nachricht gelesen wurde, ein erfolgreicher Commit des Offsets in Kafka.