在单线程Spring Integration中,整个pipleine在同一事务中运行的应用程序,错误通道不适用。相反,异常将被抛回调用者。
我这样做的方法是定义一个服务激活器,它是处理传入消息的第一个组件链。
@ServiceActivator
public Message handleException(Message message) {
try {
return message;
}
catch (Throwable throwable){
// HANDLE ERROR
}
return null;
}
这是正确的方法,还是有更好的策略?
由于
答案 0 :(得分:1)
没有;那根本不会做任何事情;它只是将消息传递给链中的下一个元素。如果您不需要以任何方式处理错误,并且只是希望将其抛回调用者,则您无需执行任何操作。如果流的开始是网关,则网关将从MessagingException
解包原因。
当然,您可以在网关上放置一个错误通道并在那里处理它。
在提出这些一般性问题时,通常最好提供一些关于流程(入口点等)的更多详细信息。