未调用全局erroChannel服务激活器

时间:2015-03-24 06:42:37

标签: spring integration

我为全球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();
}

由于我明确地抛出了错误,我希望这会被全局错误通道捕获,并反过来调用我的处理程序,它没有做。知道为什么?

1 个答案:

答案 0 :(得分:0)

如果您的流中有异步切换,则会将异常包装到ErrorMessage并发送到全局(默认)errorChannel

请参阅Reference Manual中的更多信息。

有一张纸条:

  

这里要理解的最重要的事情是基于消息传递的错误处理仅适用于在TaskExecutor中执行的Spring Integration任务抛出的异常。这不适用于与发送方在同一线程内运行的处理程序抛出的异常(例如,通过如上所述的DirectChannel)。

许多人在Spring Integration中缺少这个标准的Java try...catch行为,并试图用errorCnannel处理所有内容。

关于您的测试方法。它完全没有意义,也没有处理任何Spring Integration的东西。