在处理了由一系列 FTP 出站网关ls
命令产生的所有消息后,停止 Spring Integration 应用程序的最佳方法是什么?
作为一项一次性工作,我需要遍历 FTP 目录结构,对找到的每个目录进行递归,并复制每个文件,然后将其作为消息发送以进行处理。一旦 FTP 目录树被完全遍历,并且遍历产生的所有消息都已被处理,我想优雅地停止应用程序。
我目前的想法是,我可以尝试跟踪网关和所有队列的活动,当它们的大小都为 0 一段时间后,终止应用程序。这可以通过做一些事情来变得更加复杂,比如为每个目录保留所有文件的计数(这需要扩展AbstractRemoteFileOutboundGateway
),确保目录名称保留在流中的所有消息头上,然后有一个下游组件保持为每个目录处理的消息计数,并在全部计算完后启动关闭。
这听起来像是相当多的工作——有人知道更简单的方法吗?我可以选择在没有 Spring Integration 的情况下编写应用程序和手动执行大量繁琐的工作(迭代 FTP 树、复制文件),或者使用 Spring Integration 但必须扩展它的一部分以匹配我的用例.