gpt4 book ai didi

java - Spring Integration 错误 channel 未收到所有异常

转载 作者:行者123 更新时间:2023-12-03 08:49:41 26 4
gpt4 key购买 nike

我正在使用 spring 集成的错误 channel 来捕获框架中的异常。但是在相同类型的两个 channel 中,一个抛出的异常被错误处理程序接收,而另一个则没有。

    
<int:gateway id="myGateway" service-interface="com.si.MyGateway" request-
channel="myRequestChannel" error-channel="errorHandlingChannel">
<!-- Redirects exceptions to error-channel -->
<int:chain input-channel="myRequestChannel" output-channel="lastChannel">
<int:header-enricher>
<int:error-channel ref="errorHandlingChannel">
<int:header-enricher>
<int:service-activator ref="testActivator1"
method="generateException" requires-reply="true" />
</int:chain>
<!-- Does not redirect exceptions to error-channel -->
<int:chain input-channel="lastChannel" output-
channel="nullChannel">
<int:header-enricher>
<int:error-channel ref="errorHandlingChannel">
<int:header-enricher>
<int:service-activator ref="testActivator2"
method="generateException" requires-reply="true" />
<int:filter ref="myFilter" discard-channel="nullChannel" />
<int:service-activator ref="testActivator3"
method="generateException" requires-reply="true" />
<int:filter ref="myFilter" discard-channel="nullChannel" />
</int:chain>
<int:service-activator input-channel="errorHandlingChannel"
ref="errorHandler" method="handle" />



errorHandler 的handle 方法接受MessagingException。当我从 myRequestChannel 抛出异常时,errorHandler 会接收到它,但是当从 testActivator2 或 testActivator3 抛出相同的异常时,它根本不会到达 errorHandler。

两个 channel 都定义为异步 channel :

<int:channel>
<int:queue capacity="10">
</int:channel>


在调试时,我发现所有方法的异常都被抛出,并且当内部类最终抛出一个 MessagingException 时,所有方法的异常都被抛出并通过 spring 的类跟随链,但是最后两个激活器的异常没有到达处理程序。

可能是什么原因?

最佳答案

你抛出什么样的异常?

如果是MessagingException它必须与 failedMessage 一起提供,否则错误发送到默认errorChannel<poller> .

关于java - Spring Integration 错误 channel 未收到所有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44409061/

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