Неподтвержденные сообщения Kafka с отключенной автоматической фиксацией - PullRequest
0 голосов
/ 18 декабря 2018

В настоящее время у моего потребителя kafka у меня отключена автоматическая фиксация , поэтому в настоящее время, когда обработка сообщений не удалась, например, три недействительных сообщения, ручная квитанция завершается неудачей, и задержка увеличивается до трех.

ТЕКУЩЕЕ РАЗДЕЛЕНИЕ ТЕКУЩЕГО СМЕЩЕНИЯ LAG-END-OFFSET LAG
заказов 0 35 38 3

После этого, если поступает новое действительное сообщение и выполняется обработкаэтого сообщения успешно завершено, оно вручную подтверждено, и после этого потребитель выглядит следующим образом

ТЕМА РАЗДЕЛ CURRENT-OFFSET LOG-END-OFFSET LAG
заказы 0 39 39 0

Почему потребитель устанавливает текущее смещение равным 39, когда сообщения со смещением 36, 37, 38 не были успешно обработаны, и они никогда не будут снова прочитаны одним и тем же потребителем

Может кто-нибудь, пожалуйста, объясните этоповедение?Заранее спасибо!

1 Ответ

0 голосов
/ 19 декабря 2018

В Kafka потребители не проверяют каждое сообщение.Вместо этого они фиксируют (фиксируют) смещение последнего обработанного ими сообщения.

Например, если вы фиксируете смещение 15, это неявно означает, что вы обработали все сообщения ранее от 0 до 15. Также при фиксации 15,Вы перезаписываете любой предыдущий коммит, поэтому не можете знать, совершали ли вы 13 или 14. До этого.

Я предлагаю вам прочитать раздел Позиция потребителя в документах, которые касаются этой концепции.

Что касается переработки, Кафка предлагает несколько вариантов.В случае сбоя обработки перед опросом новых сообщений и обработкой новых записей вы можете попробовать обработать сообщение.Другой вариант - пропустить его как недействительный и продолжить (то, что вы в данный момент делаете).

С другой стороны, вы можете убедиться, что данные хороши, запустив задание Streams для передачи действительных сообщений в проверенную тему ипересылать плохие сообщения в DLQ.Затем используйте эту проверенную тему, в которой вы знаете, что у вас есть только хорошие сообщения.См. подтверждение для сообщений темы kafka

...