如何在处理过程中引发异常的 Spring Integration 中路由消息?
Posted
技术标签:
【中文标题】如何在处理过程中引发异常的 Spring Integration 中路由消息?【英文标题】:How can I route messages in Spring Integration, which an exception was thrown during processing? 【发布时间】:2020-02-17 15:04:47 【问题描述】:我有以下集成流程:
Integration Flow
如果在第二个拆分方法期间抛出异常,在解析器内部,我想将该消息引导到错误通道,这可能吗?
【问题讨论】:
【参考方案1】:一种方法是将 spitter 的输出通道设置为 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
【讨论】:
修复了一个带有更多选项的答案,因为discardChannel
不符合此要求。以上是关于如何在处理过程中引发异常的 Spring Integration 中路由消息?的主要内容,如果未能解决你的问题,请参考以下文章
在春季批处理(spring-boot-1.5.2.RELEASE)中使用多个数据源在启动时引发异常