【问题标题】:sftp spring integration - pulling files from remotesftp spring 集成 - 从远程拉文件
【发布时间】:2015-12-02 15:52:27
【问题描述】:

我想将文件从远程服务器拉到我的本地。我正在使用 Spring Integration 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 批处理程序在第一次之后停止并且不再拉同一个文件。 我怎样才能做到这一点?

【问题讨论】:

    标签: spring-integration spring-batch sftp


    【解决方案1】:

    入站通道适配器使用目录同步的概念;如果您的流程删除了该文件,它将被重新获取以同步本地目录。但是,它不会作为消息发出,因为本地过滤器是AcceptOnceFileListFilter。但是,这不会在系统重新启动后继续存在。

    您可以使用CompositeFileListFilter 来包含SftpPersistentAcceptOnceFileListFilterSftpSimplePatternFileListFilter。这将防止重新获取,并将在系统重新启动后继续存在;然而,它需要一个MetadataStore 来存储状态。

    要只运行一次,您可以使用FireOnceTrigger 并将max-messages-per-poll 设置为-1,以便在一次轮询中获取所有文件。

    您也可以考虑使用出站网关到get 仅那些您想要的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多