使用Sftp从目录下载所有文件的最佳实践是什么
我想实现以下功能:使用Sftp从目录下载所有文件的最佳实践是什么,sftp,spring-integration,Sftp,Spring Integration,我想实现以下功能: 将所有文件从指定的远程目录下载到本地目录 下载所有文件后,我需要一个包含所有下载文件的列表文件。 (我只希望在成功下载所有文件时使用此列表文件。) 第1点: 假设远程目录中有大约10个文件。 我可以使用int-sftp:inbound channel adapter组件下载所有文件,但下载所有文件需要10个轮询周期,因为每个轮询请求入站组件只能下载1个文件。 Spring集成一个接一个地创建10个文件消息 问题: 如何识别从FTP服务器接收的最后一个文件(消息) 我不想让用户
int-sftp:inbound channel adapter
组件下载所有文件,但下载所有文件需要10个轮询周期,因为每个轮询请求入站组件只能下载1个文件。
Spring集成一个接一个地创建10个文件消息
问题:
首先,这是不正确的: 入站组件每次轮询请求只能下载1个文件 您可以将其配置为在单个轮询期间无限下载-
max messages per poll=-1
。无论如何,它是
上的默认选项
无论如何,如果您的情况是每次轮询加载一个文件,您可以继续执行该要求
由于任何消息传递系统都试图实现无状态模式,因此一条消息对另一条消息一无所知是正常的。这样它们就不会相互影响了。async
场景最适合于消息传递。这样我们可以比第一条更快地处理第二条消息
你的要求很有趣,我不敢说这很奇怪。因为任何事情都有可能发生
由于要将多个下载文件作为一个组进行处理,因此需要在远程服务器上设置一些标记。或者它可以是一些时间框架
,我们可以从文件时间戳
中提取。或者需要在远程服务器上存储一些标记文件,以指示一组文件已完成,您可以使用本地版本从应用程序处理它们。如果标记文件可以包含该组的文件名列表,那就太好了
否则,我们就没有任何钩子指向这些文件的组消息
另一方面,您可以考虑使用<代码> <代码>使用<代码> MGE< /COD>命令:
当前实施的解决方案通过使用INTSFTP:在远程FTP服务器上执行LS命令:出站网关能够处理一个组中的FTP文件。然后我将列表拆分并逐个下载,在进程结束时,文件将从FTP中删除。但这种解决方案有一个缺点。出站网关组件不支持轮询。所以我不得不使用外部调度来使用这个对我来说有点难看的解决方案。事实上,这没关系。您可以使用伪
实现出站网关
轮询
场景,并将空字符串消息发送到该SFTP网关的请求通道
。非常感谢。这是一个避免外部调度的好方法。