Сбой потребителя Kafka после обработки, но до совершения смещения?

Я выполняю некоторую работу с POC с Kafka и изучаю функции «ровно один раз», используя транзакционный API, и все еще застрял на нескольких вопросах. Что произойдет, если потребитель выйдет из строя после обработки сообщения, но до фиксации его смещения? Кажется, что следующий запуск неизбежно начнется с неправильного сообщения, и будет получено дублирующее сообщение. Как мне справиться с этим сценарием?

Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
1
0
375
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что произойдет, если потребитель выйдет из строя после обработки сообщения, но до фиксации его смещения?

Кафка: полное руководство упоминает опцию, согласно которой, если обработка сообщения включает в себя запись сообщений в БД, мы также можем записать обработанные смещения в БД и использовать это смещение на этапе восстановления путем поиска (seek()) смещения, из которого мы хотим опрос от Кафки.

Тем не менее, вы можете иметь уникальный идентификатор в каждом сообщении, чтобы потребители могли проверить, было ли сообщение обработано ранее или нет. Это (обработка дубликатов) всегда должно быть реализовано в коде потребителя.

Поэтому, если я не могу завершить обработку и сохранить смещения где-то атомарным образом, я не могу решить эту проблему. Это отстой, но это имеет смысл.

b15 15.05.2019 18:54

Другие вопросы по теме