Как я могу маршрутизировать сообщения в Spring Integration, какие исключения были выброшены во время обработки? - PullRequest
2 голосов
/ 21 октября 2019

У меня есть следующий поток интеграции:

Поток интеграции

Если во время второго метода разделения возникнет исключение, внутри анализатора я бы хотел направитьэто сообщение в канал ошибок, это возможно как-то?

1 Ответ

2 голосов
/ 21 октября 2019

Один из способов - иметь выходной канал для спитера в виде ExecutorChannel или QueueChannel. Таким образом, каждый разделенный элемент будет обрабатываться в отдельном потоке. Затем вы можете применить любые доступные варианты обработки ошибок для этих асинхронных каналов. См. Документацию для получения дополнительной информации: https://docs.spring.io/spring-integration/docs/5.2.0.RELEASE/reference/html/error-handling.html#error-handling

Другой вариант - использовать .gateway() с его опцией errorChannel ниже по потоку после второго сплиттера, чтобы каждый элемент снова обрабатывался изолированно.

Также ExpressionEvaluatingRequestHandlerAdvice (возможно, вместе с RequestHandlerRetryAdvice) можно использовать ниже по потоку в конкретной конечной точке для обработки своих собственных исключений: https://docs.spring.io/spring-integration/docs/5.2.0.RELEASE/reference/html/messaging-endpoints.html#message-handler-advice-chain

...