gpt4 book ai didi

java - Spring 集成中的错误处理/传播

转载 作者:行者123 更新时间:2023-11-30 08:53:57 26 4
gpt4 key购买 nike

我读到如果在流程中抛出异常,框架要做的第一件事就是检查消息头中的错误 channel 属性。总是这样吗?

在我的特殊情况下,我将自定义错误 channel 分配给消息 header ,但该消息似乎已向上传播到最近的错误处理程序/错误 channel 。

<int:chain id="buildAggregatedResponseChain" input-channel="aggregatedResultChannel"
output-channel="sendAggregatedChannel">
<int:header-enricher>
<int:error-channel ref="myErrorChannel"/>
</int:header-enricher>
<int:service-activator ref="service" method="doSomething"/>
</int:chain>

我在 doSomething 中明确抛出异常,但异常永远不会在 myErrorChannel 中结束。相反,它被“传播”到流上游最近的 ErrorHandler 或流上游为 int-mail:imap-idle-channel-adapter 指定的错误 channel (尝试了几种不同的流)。 我想念什么?也许有人可以概述错误处理/错误传播的主要原则(例如,在谈论多个交易等时)?那里有一些资料,但比较零散,不系统。

最佳答案

取决于上游流量;如果存在异步切换,则咨询 header ;否则,异常将被抛回入站端点。

一般来说,我建议不要修改框架 header ,例如 errorChannel。而是在入站端点(例如您的 imap 空闲适配器)上放置一个 error-channel 并处理该流上的错误。

很少需要直接修改 header 。如果你想插入不同的错误处理中间流程,那么你可以插入一个消息传递网关......

<int:service activator ... ref="gw" />

<int:gateway id="gw" default-request-channel="..."
error-channel="midFlowErrorChannel" />

如果下游流(来自网关)在成功时没有返回任何结果,那么请务必添加默认回复超时 0(或使用自定义服务接口(interface)和返回 void 的方法)。

关于java - Spring 集成中的错误处理/传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29594064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com