Spring integration sftp spring集成-从远程文件中提取文件
我想将文件从远程服务器拉到本地服务器。我正在使用Spring集成SFTP来提取文件。我有以下配置:Spring integration sftp spring集成-从远程文件中提取文件,spring-integration,spring-batch,sftp,Spring Integration,Spring Batch,Sftp,我想将文件从远程服务器拉到本地服务器。我正在使用Spring集成SFTP来提取文件。我有以下配置: <sftp:inbound-channel-adapter id="sftpAdapterAutoCreate" session-factory="sftpSessionFactory" channel="inputChannel" filename-pattern="*.txt" remote-directory="/remotedir" l
<sftp:inbound-channel-adapter id="sftpAdapterAutoCreate"
session-factory="sftpSessionFactory" channel="inputChannel"
filename-pattern="*.txt" remote-directory="/remotedir"
local-directory="file:target/foo" auto-create-local-directory="true"
delete-remote-files="false" >
<int:poller fixed-rate="30000" />
</sftp:inbound-channel-adapter>
成功拉取后,我不想从remotedir删除文件。这里发生的事情是,每隔30秒,remotedir中的文件就会被拉到本地。我希望spring批处理程序在第一次之后停止,并且不再拉取相同的文件。
如何实现这一点?入站通道适配器使用目录同步的概念;如果您的流删除了该文件,将重新获取该文件以同步本地目录。但是,它不会作为消息发出,因为本地筛选器是一个
AcceptOnceFileListFilter
。但是,这在系统重新启动后无法继续存在
您可以使用CompositeFileListFilter
将sftpersistentAcceptonFileListFilter
与SftpSimplePatternFileListFilter
一起包括在内。这将防止重新获取,并在系统重新启动后仍然有效;然而,它需要一个元数据存储
来存储状态
要仅运行一次,您可以使用,并将每次轮询的max messages
设置为-1
,以便在单个轮询中获取所有文件
你也可以考虑使用一个出入口网关来<代码>获取< /COD>只有那些你想要的文件。