Как обрабатывать ошибки и повторы в Spring-Kafka - PullRequest
0 голосов
/ 18 сентября 2018

Этот вопрос относится к: https://github.com/spring-projects/spring-kafka/issues/575

Я использую spring-kafka 1.3.7 и транзакции в цикле чтения-процесса-записи.Для этой цели я должен использовать KTM в контейнере spring kafka, чтобы включить транзакцию для всего процесса слушателя и автоматически обрабатывать идентификатор транзакции на основе раздела для зомби-фехтования (изменения 1.3.7).

Если яИз проблемы № 575 хорошо понимаю, я не могу использовать RetryTemplate в контейнере при использовании менеджера транзакций.

Как я должен обрабатывать ошибки и повторные попытки в таком случае?Поведение по умолчанию с транзакцией - бесконечные повторы?Это кажется действительно опасным.Неожиданное исключение может просто заблокировать весь процесс производства.

1 Ответ

0 голосов
/ 18 сентября 2018

Предстоящий выпуск 2.2 добавляет восстановление к DefaultAfterRollbackProcessor - так что вы можете прекратить повторные попытки после некоторого количества попыток.

Документы здесь , PR здесь .

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

Если вы не можете перейти на 2.2 (выпуск кандидата должен быть в конце этой недели, сGA в октябре), вы можете предоставить пользовательский AfterRollbackProcessor с аналогичной функциональностью.

EDIT

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

...