Spring integration 聚合器发布策略取决于另一个正在运行的服务激活器

Spring integration 聚合器发布策略取决于另一个正在运行的服务激活器,spring-integration,Spring Integration,我理解基于大小的聚合是如何工作的,但我还想让发布策略依赖于管道中的另一个仍在运行的步骤。我的想法是将文件移动到某个目录“源”,聚合足够的文件,然后从“源”移动到“阶段”,然后处理阶段文件。当此进程正在运行时,我不想在阶段中放置更多文件,但我想继续将更多文件添加到源文件夹中(该部分通过使用与聚合器之前的文件入站适配器连接的dispatcher通道进行处理) 如您所见,如果moveToStage service activator的现有实例正在运行,我不想释放聚合消息 我曾考虑将stagedFi

我理解基于大小的聚合是如何工作的,但我还想让发布策略依赖于管道中的另一个仍在运行的步骤。我的想法是将文件移动到某个目录“源”,聚合足够的文件,然后从“源”移动到“阶段”,然后处理阶段文件。当此进程正在运行时,我不想在阶段中放置更多文件,但我想继续将更多文件添加到源文件夹中(该部分通过使用与聚合器之前的文件入站适配器连接的dispatcher通道进行处理)


如您所见,如果moveToStage service activator的现有实例正在运行,我不想释放聚合消息

我曾考虑将stagedFiles通道设置为队列通道,但这似乎不对,因为我确实希望将文件作为集合传递给moveToStage,而不是单个文件,我假设通过将stagedFiles设置为队列通道,它将发送单个文件。相反,我希望达到一个阈值,例如10个文件,将这些文件传递给stagedFiles,这允许moveToStage处理这些文件,但在完成此步骤之前,我希望聚合器继续聚合文件,然后释放所有聚合文件


谢谢

我建议您使用一些标志作为
原子布尔
bean,并从
moveToStage#move
中使用它,并从以下位置检查它的状态:

release-strategy-expression="size() >= 10 and @stagingFlag.get()" 
release-strategy-expression="size() >= 10 and @stagingFlag.get()"