当所有其他消息完成处理时,Spring集成处理消息



是否有一种方法,当所有其他消息(其他类型)完成处理时,spring集成图中的组件将首先开始处理消息(结束一天)?在这个问题中,我们必须考虑到spring集成可以启动多个线程。另一个限制是,该组件将在我无法控制的图形中使用。所以我不知道:

  • 多长"其他类型"消息处理占用
  • 如果一些消息运行错误
  • 只是被一些过滤器过滤掉了
  • 与发布-订阅通道
  • 相乘
  • 如果有一些TaskExecutor被使用(引入新的线程和事务边界)
  • 没有结束工件,我可以检查它是否存在

when "end of day"到我的组件,有可能"其他类型"消息仍在处理中。即使我的组件位于图的末尾,如果错误没有到达那里,消息也可能运行。另一种可能是一条消息被放大了,我不知道放大了多少次。正因为如此,我不知道我要等多久才能等到"末日"。处理。

也有可能其他工具/框架会使这个问题更容易或完全消除它。

正在考虑检查任务执行器是否所有线程都是空闲的,但是可能有几个任务执行器没有涉及到。

这听起来与你在问题中所说的无关,当你声称你使用的过程是一个黑盒。

如果你真的可以以某种方式访问流程,例如通过ChannelInterceptor: https://docs.spring.io/spring-integration/docs/current/reference/html/core.html#channel-interceptors,那么你可以在流程开始时设置一些全局bean,如AtomicBoolean active,并在最后重置。所以,你的"在一天结束的时候"消息将定期轮询此标志,以确定何时发送它。当标志为false时,您可以简单地使用@InboundChannelAdapternull来生成消息。

最新更新