ConcurrentKafkaListenerContainerFactory обрабатывает ошибки при обработке сообщений следующим образом:
- В версиях младше 2.5. habr.com Если самостоятельно не настроить обработчик ошибок, то будет создан LoggingErrorHandler, который залогирует ошибку и обработка продолжится. habr.com
- Начиная с версии 2.5. habr.com Обработчиком по умолчанию становится SeekToCurrentErrorHandler, который сделает 10 попыток обработать сообщение без задержки. habr.com Если все они закончатся неудачей, ошибка также будет залогирована и произойдёт переход к обработке следующего сообщения. habr.com
Кроме того, в Spring Kafka 2.7 есть функция неблокирующих повторных попыток. bigdataschool.ru Когда топик настроен на повторную попытку, а слушатель, обрабатывающий сообщение, выдаёт исключение, настроенный механизм восстановления после ошибок выполняет следующие шаги: bigdataschool.ru
- вычисляет время, когда сообщение должно быть обработано снова; bigdataschool.ru
- создаёт повторное сообщение как копию исходного с дополнительными заголовками (время выполнения сообщения, сведения об исключении и пр.); bigdataschool.ru
- вычисляет следующий топик повтора и публикует в нём это сообщение; bigdataschool.ru
- если количество попыток исчерпано, сообщение удаляется или отправляется в топик DLT, чтобы обработать его позже при необходимости. bigdataschool.ru