транзакционный опросник, отправляющий исключение в канал ошибок - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть транзакционный опросчик, периодически опрашивающий сообщения из канала очереди с поддержкой jdbc

У меня есть 2 цели:
1) предотвратить потерю сообщения из моего источника в случае, если процесс умирает в середине обработки сообщения.
2) не допустить того, чтобы одно неверно отформатированное сообщение обрушило целоеобработать, отбросив соответствующее исключение в канал ошибок (и перейдя к следующему сообщению)

Мой вопрос:
Как настроить (в идеале через dsl) мой транзакционный опросор, чтобы он отбрасывал ошибочное сообщениев канал ошибок без отката транзакции?
(чтобы предотвратить бесконечный цикл, в котором одно и то же сообщение воспроизводится снова и снова).

Большое спасибо за ваши отзывы и опыт.

С наилучшими пожеланиями

1 Ответ

0 голосов
/ 27 февраля 2019

Текущая архитектура (и я сомневаюсь, что мы ее изменим) основана на том факте, что мы отправили на errorChannel из устройства опроса уже после отката транзакции.Таким образом, мы покрываем не только проблему с вашим сообщением, но и возможный сбой во время фиксации.Поэтому любые исключения в рамках задачи опроса обрабатываются с тем же errorChannel.

Поскольку такой подход errorChannel не соответствует вашим требованиям, потому что неправильное сообщение будет откатано в БД для следующего опроса, я бы посоветовал вам использовать ExpressionEvaluatingRequestHandlerAdvice downstreamвокруг некоторого минимального обслуживания, где вы определенно терпите неудачу с неправильным сообщением.Таким образом, вы можете настроить соответствующий failureChannel и отправить туда сообщение об ошибке, оставив весь процесс нетронутым и, следовательно, завершив его надлежащим образом в конце.

См. Дополнительную информацию в Документах: https://docs.spring.io/spring-integration/docs/current/reference/html/#message-handler-advice-chain

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...