我为全球errorChannel
编写了服务激活器。
<!-- global default exception handler-->
<int:service-activator input-channel="errorChannel"
auto-startup="true" ref="defaultExeptionHandler" >
</int:service-activator>
测试课
@Test
public void testTradeAcceptanceFlow() throws Exception {
throw new FileNotFoundException();
}
由于我明确地抛出了错误,我希望这会被全局错误通道捕获,并反过来调用我的处理程序,它没有做。知道为什么?
答案 0 :(得分:0)
如果您的流中有异步切换,则会将异常包装到ErrorMessage
并发送到全局(默认)errorChannel
。
请参阅Reference Manual中的更多信息。
有一张纸条:
这里要理解的最重要的事情是基于消息传递的错误处理仅适用于在TaskExecutor中执行的Spring Integration任务抛出的异常。这不适用于与发送方在同一线程内运行的处理程序抛出的异常(例如,通过如上所述的DirectChannel)。
许多人在Spring Integration中缺少这个标准的Java try...catch
行为,并试图用errorCnannel
处理所有内容。
关于您的测试方法。它完全没有意义,也没有处理任何Spring Integration的东西。