0
在单线程Spring Integration中,整个pipleine在同一事务中运行的应用程序中,错误通道不适用。相反,异常将被抛回给调用者。单线程应用程序中的错误处理
我这样做的方式是定义一个服务激活器,它是处理传入消息的组件链中的第一个。
@ServiceActivator
public Message handleException(Message message) {
try {
return message;
}
catch (Throwable throwable){
// HANDLE ERROR
}
return null;
}
这是正确的方法,还是有更好的策略?
谢谢
谢谢加里,应该是更具体。我的入口点是jdbc:入站通道适配器(使用任务执行程序)。我知道在单线程应用程序中,可以在网关中放置错误通道,但是可以在这种情况下为jdbc适配器定义一个错误通道?如果不是,当入口点是jdbc适配器时,应如何处理单线程/事务方案的错误? – user1052610
是的,'error-channel'在轮询端点的轮询器(不是适配器)上。轮询器触发,切换到“TE”线程。如果轮询器是事务性的,则交易开始;如果抛出一个异常,'ErrorMessage'被发送到事务中的'error-channel',所以错误流可以决定是否捕获和处理,在这种情况下事务被提交,或者如果错误流引发异常,交易将被回滚。 –