FTP文件下载顺序与Spring集成

FTP文件下载顺序与Spring集成,spring,ftp,spring-integration,Spring,Ftp,Spring Integration,我正在使用SpringIntegration从SFTP服务器下载一组PDF和XML文件。该过程由基于cron的轮询器触发。我需要确保在从同一远程目录下载PDF文件之前,所有XML文件都已完全下载。 我不想使用两个不同的cron作业来触发这些。 我怎样才能解决这个问题?提前谢谢。(注意:我不熟悉集成框架)我建议计算目录中的文件数,然后在循环中使用它。要检查UNIX系统上的文件数,可以使用以下命令: ls -1fa | wc -l 下载所有XML后,您可以触发另一个方法开始下载PDF文件。在过滤器

我正在使用SpringIntegration从SFTP服务器下载一组PDF和XML文件。该过程由基于cron的轮询器触发。我需要确保在从同一远程目录下载PDF文件之前,所有XML文件都已完全下载。 我不想使用两个不同的cron作业来触发这些。
我怎样才能解决这个问题?提前谢谢。(注意:我不熟悉集成框架)

我建议计算目录中的文件数,然后在循环中使用它。要检查UNIX系统上的文件数,可以使用以下命令:

ls -1fa | wc -l

下载所有XML后,您可以触发另一个方法开始下载PDF文件。

过滤器
属性中使用自定义的
文件列表过滤器
(FTP使用
FTPFile
,SFTP使用
LsEntry
作为参数化通用类型)


filterFiles
方法中,按照您希望下载的顺序对候选文件列表进行排序。

非常感谢@garry您的解决方案在从SFTP导入之前对文件进行了排序。但是在导入之后,我会为每个文件触发spring批处理作业。由于批处理作业是由一组执行者并行执行的,因此顺序似乎无法维持。当我将遗嘱执行人的数量减少到1人时,该命令将被保留;如果在相应的XML完全到达之前不发布PDF,处理顺序会有什么不同?感谢您的快速响应。我检查了我的代码,看起来排序顺序在从SFTP传递到通道后没有得到维护。我已将代码的主要部分粘贴到描述中。你能指出这里出了什么问题吗?啊,是的;还有一个本地过滤器(你有)。同步器筛选器控制下载顺序,但本地磁盘上的文件顺序可能不同。您还需要自定义本地筛选器以进行排序。我也自定义了本地筛选器,但输出显示的顺序仍然不同。当我调试过滤器时,它似乎工作得很好(按预期排序),但之后顺序会改变。顺便问一下,我是否可以使用
重新排序器
以某种方式保留排序顺序?如果是,你能提供一些链接来尝试吗?