Java 结束流程的Spring集成

Java 结束流程的Spring集成,java,spring,spring-integration,Java,Spring,Spring Integration,我正在从事一个spring集成项目,目前我们在某些情况下使用returnnull来结束流。一般来说,返回null不是一个好的做法,我正在寻找替代。我尝试抛出异常来停止流,我认为这比返回null要好。但在某些情况下,有两个流来自单个发布-订阅通道,在这些情况下,抛出异常会停止这两个流。有没有更好的方法来停止SI中的流 如您所说:返回null。有一种方法可以通过某种条件(与您决定返回null)将单向组件路由到出站通道适配器,从而结束流。但这太罗嗦了。尽管在将来,您可以灵活地在这种null情况下执行任

我正在从事一个spring集成项目,目前我们在某些情况下使用returnnull来结束流。一般来说,返回null不是一个好的做法,我正在寻找替代。我尝试抛出异常来停止流,我认为这比返回null要好。但在某些情况下,有两个流来自单个发布-订阅通道,在这些情况下,抛出异常会停止这两个流。有没有更好的方法来停止SI中的流

如您所说:返回
null
。有一种方法可以通过某种条件(与您决定返回
null
)将单向组件路由到出站通道适配器,从而结束流。但这太罗嗦了。尽管在将来,您可以灵活地在这种
null
情况下执行任何其他操作


是的,异常方式可能会导致意外行为,特别是当您在第一次调用后有逻辑时,例如在发布-订阅情况下。但是,当您使用执行者频道时,您仍然可以做到这一点。

嗨,Artem Bilan,谢谢您的回复。是的,我们尝试了executor,它可以工作,但是添加executor会增加额外的复杂性,特别是当服务非常简单和直接时。我在想,是否有像end channel这样的东西,我们可以在其中路由消息并结束流,或者直接调用SI方法来显式结束流。在这种情况下,阅读和理解代码会更有表现力。是的,有这样一个通道,它被称为
nullChannel
:。但你仍然需要一个路由逻辑来实现这一点。从服务方法返回
null
以停止流要容易得多。现在返回null只需使用null对象的名称,如“returnthis\u null\u OBJEC\u STOPS\u the\u flow”,以使其更具表现力。@ArtemBilan是否有方法检测流结束?实际上,我在流程中定义了许多步骤,但最终返回值为null。我还想要一个null返回的计数。