单线程应用程序中的错误处理

时间:2014-02-27 09:04:24

标签: spring-integration

在单线程Spring Integration中,整个pipleine在同一事务中运行的应用程序,错误通道不适用。相反,异常将被抛回调用者。

我这样做的方法是定义一个服务激活器,它是处理传入消息的第一个组件链。

@ServiceActivator
public Message handleException(Message message) {
   try {
      return message;
   }
   catch (Throwable throwable){
      // HANDLE ERROR
   }
   return null;
}

这是正确的方法,还是有更好的策略?

由于

1 个答案:

答案 0 :(得分:1)

没有;那根本不会做任何事情;它只是将消息传递给链中的下一个元素。如果您不需要以任何方式处理错误,并且只是希望将其抛回调用者,则您无需执行任何操作。如果流的开始是网关,则网关将从MessagingException解包原因。

当然,您可以在网关上放置一个错误通道并在那里处理它。

在提出这些一般性问题时,通常最好提供一些关于流程(入口点等)的更多详细信息。