Spring integration sftp spring集成-从远程文件中提取文件

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

我想将文件从远程服务器拉到本地服务器。我正在使用Spring集成SFTP来提取文件。我有以下配置:

<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>只有那些你想要的文件。