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.