springBoot ConcurrentKafkaListenerContainerFactory, что делать, если вниз по течению не работает? - PullRequest
0 голосов
/ 13 октября 2019

Я немного озадачен ConcurrentKafkaListenerContainerFactory и setErrorHandler(org.springframework.kafka.listener.ErrorHandler)

Не могли бы вы дать мне несколько советов, пожалуйста?

Я должен передать сообщение Кафки внешней системе. Прямо сейчас ErrorHandler довольно наивно. Он отправляет сообщение на dead-letter-queue, если обработчик сообщения выдает исключение. Обработчик сообщений может выдать исключение по двум причинам:

  • нарушение бизнес-проверок
  • внешняя система недоступна

Можно отправить сообщение на отказ-queue, если бизнес-проверки вызывают исключение.

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

Я хотел бы посмотреть, есть ли какая-то квитанция Spring для такого случая. Спасибо!

1 Ответ

0 голосов
/ 13 октября 2019

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

  • SeekToCurrentErrorHandler может быть настроен для обработки определенных исключений как фатальных, отключая повторную попытку;теперь вы также можете добавить BackOff между попытками повторной доставки для неудачных доставок.

Обратите внимание, что для 2.3 требуется Spring Boot 2.2;который в настоящее время доступен как кандидат на выпуск и скоро будет выпущен.

...