Spring 在所有其他消息完成处理时集成进程消息

Spring integration process message when all other messages finished processing

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

当“一天结束”到达我的组件时,“其他类型”消息可能仍在处理中。即使我的组件位于图表的末尾,消息 运行 也可能没有到达那里。消息被重复的其他可能性,我不知道有多少次。因此,我不知道我应该等待多长时间才能完成“结束日”处理。

也有可能另一个 tool/framework 会使这个问题更容易或完全消除。

was tinking about checking the task executor if all threads are free, but there might be several task executors some of which not involved.

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

如果您真的可以以某种方式访问​​该过程,例如via ChannelInterceptor: https://docs.spring.io/spring-integration/docs/current/reference/html/core.html#channel-interceptors,所以你可以有一些像 AtomicBoolean active 这样的全局 bean 在流程的开始设置并在结束时重置。因此,您的“一天结束时”消息将定期轮询此标志以确定何时发送它。当标志为 false.

时,您只需简单地使用 @InboundChannelAdapter 来生成您的消息或 null