Как осуществляется сброс смещения Kafka для параллельного потребления? - PullRequest
0 голосов
/ 26 февраля 2020

Я хотел бы лучше понять процесс повторения сообщения Kafka. Я слышал, что неудачная обработка использованных сообщений может быть решена с помощью 2 опций:

  1. SeekToCurrentErrorHandler (сброс смещения)
  2. публикация сообщения в очереди недоставленных сообщений (DLQ)

Второй вариант довольно ясен: если сообщение не удалось обработать, оно просто помещается в очередь ошибок. Меня больше интересует первый вариант.

AFAIK, 1-й вариант является наиболее широко используемым, но как он работает, когда несколько потребителей одновременно получают сообщения из одной и той же топики c? Работает ли это так, что если конкретное сообщение не удалось, смещение для идентификатора потребителя сбрасывается на смещение сообщения? Что произойдет с сообщениями, успешно обработанными одновременно / после сбоя, будут ли они повторно обработаны?

Как вы можете посоветовать мне разобраться с повторными попытками сообщения?

1 Ответ

1 голос
/ 26 февраля 2020

Каждый раздел может использоваться только одним потребителем.

Если у вас несколько потребителей, у вас должно быть как минимум такое количество разделов.

Смещение сохраняется для каждого раздела; обработчик ошибок будет (может) выполнять поиск только в тех разделах, которые назначены этому потребителю.

...