Sobes.tech
Junior — Middle

Как може да се определи фактът, че съобщението е прочетено в Kafka?

sobes.tech AI

Отговор от AI

В Kafka фактът, че съобщението е прочетено, се определя чрез отмествания (offsets) в партициите на темата. Всеки потребител (consumer) следи до кое отместване е прочел в всяка партиция.

За да се определи, че съобщението е прочетено, е необходимо:

  • Да се уверите, че потребителят е успешно обработил съобщението.
  • Да потвърдите (commit) отместването на това съобщение в Kafka, т.е. да информирате брокера, че всички съобщения до това отместване са обработени.

В Go, използвайки Kafka клиент (например sarama или confluent-kafka-go), можете явно да потвърдите отместванията след обработката на съобщенията. Ако отместването е потвърдено, съобщението се счита за прочетено и няма да бъде доставено повторно на този потребител.

Пример с sarama (опростен):

consumer.MarkMessage(msg, "") // Маркира съобщението като прочетено
consumer.CommitOffsets()       // Потвърждава отместванията

По този начин фактът, че съобщението е прочетено, е успешен commit на отместването в Kafka.