Если offset подтверждён до устойчивого результата обработки, после сбоя сообщение может не обработаться повторно. Ручной commit позволяет связать продвижение offset с завершением работы.
Есть ли риск потерять сообщение на consumer и зачем нужен ручной commit offset?
Если offset подтверждён до устойчивого результата обработки, после сбоя сообщение может не обработаться повторно. Ручной commit позволяет связать продвижение offset с завершением работы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Если offset подтверждён до устойчивого результата обработки, после сбоя сообщение может не обработаться повторно. Ручной commit позволяет связать продвижение offset с завершением работы.
Для at-least-once сначала сохраняют результат, затем подтверждают следующий offset. Сбой между этими шагами даёт повтор, поэтому обработчик должен быть идемпотентным. При параллельной обработке нельзя подтверждать offset через незавершённые записи той же партиции. Ручной commit не создаёт автоматически общую транзакцию между Kafka и внешней БД.