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

Spring integration 单线程应用程序中的错误处理,spring-integration,Spring Integration,在单线程Spring集成应用程序中,如果整个PipleLine在同一事务中运行,则错误通道不适用。相反,异常将被抛出回调用方 我这样做的方式是定义一个服务激活器,它是处理传入消息的组件链的第一个 @ServiceActivator public Message handleException(Message message) { try { return message; } catch (Throwable throwable){ // HANDLE

在单线程Spring集成应用程序中,如果整个PipleLine在同一事务中运行,则错误通道不适用。相反,异常将被抛出回调用方

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

@ServiceActivator
public Message handleException(Message message) {
   try {
      return message;
   }
   catch (Throwable throwable){
      // HANDLE ERROR
   }
   return null;
}
这是正确的方法,还是有更好的策略


谢谢

不;那根本没用;它只是将消息传递给链中的下一个元素。如果您不需要以任何方式处理错误,只想将其返回给调用方,则无需执行任何操作。如果流的开始是网关,网关将从
消息异常
中打开原因

当然,您可以在网关上设置一个错误通道并在那里进行处理


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

谢谢Gary,应该更具体一些。我的入口点是一个jdbc:inbound通道适配器(使用任务执行器)。我知道在单线程应用程序中,可以在网关中设置错误通道,但在这种情况下,可以为jdbc适配器定义错误通道吗?如果不是,当入口点是jdbc适配器时,单线程/事务场景应该如何处理错误?是的,轮询端点的
错误通道在轮询器(而不是适配器)上。轮询器触发,将手交给
TE
线程。如果轮询器是事务性的,则事务开始;如果抛出异常,则
错误消息
将发送到事务中的
错误通道
,因此错误流可以决定是否捕获和处理,在这种情况下,事务将被提交,或者如果错误流抛出异常,事务将被回滚。