当前位置: 首页 > 知识库问答 >
问题:

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

仉峻
2023-03-14

我想把文件从远程服务器拉到我的本地服务器。我正在使用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 batch程序在第一次之后停止,不要再次拉出相同的文件。我怎样才能做到这一点?

共有1个答案

张敏达
2023-03-14

入站通道适配器使用目录同步的概念;如果您的流移除该文件,则将重新获取该文件以同步本地目录。但是,它不会作为消息发出,因为local-filter是acceptoncefilelistfilter。但是,这在系统重新启动后无法生存。

可以使用CompositeFileListFilter包含SFTPpersistentAcceptonCeFileListFilterSFTPSimplePatternFileListFilter。这将防止重新获取,并将在系统重新启动时幸存下来;但是,它需要一个metadatastore来存储状态。

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

 类似资料:
  • 我正在尝试使用spring集成逐行读取远程文件。使用这里找到的spring文档,我已经设置了我的项目来轮询文件,并在找到文件时通过sftp传输它。我一直在思考如何一行一行地读取文件内容。 这是我的入站通道适配器设置,当前用于拉入文件。 编辑:为了澄清,我想一次从远程文件中检索一行,然后处理该行的内容,然后检索下一行。类似于为本地文件创建java.io.inputstream并逐行读取。 非常感谢您

  • 我创建了一个@PerformanceTest注释,它利用@Before和@After自动捕获jProfiler指标。目标是将此注释应用于在单独JVM中运行的selenium测试用例。 这个框架是完整的,但我一辈子都不知道如何连接到我的Web服务器(在同一台机器上,但在一个单独的JVM中)。 我尝试连接到端口号,以及尝试本地连接,但没有成功。 我的Web服务器配置如下。请注意,我尝试了脱机和联机配置

  • 问题内容: 给定 档案的网址(例如zip文件) 该归档文件中文件的全名(包括路径) 我正在寻找一种创建该文件的本地副本的方法(最好使用Java), 而无需先下载整个档案 。 根据我(有限的)理解,这应该是可能的,尽管我不知道该怎么做。我一直在使用TrueZip,因为它似乎支持各种各样的档案类型,但是我对其使用这种方式的能力感到怀疑。有人对这种事情有经验吗? 编辑: 能够同时使用tarball和压缩

  • Fabric 的核心业务 run 和 sudo 都支持将本地的输入发送至远程,其表现形式和 ssh 基本一致。例如,有时候会遇到需要密码的情况(比如 dump 数据库,或者修改用户密码时),程序会提供近乎直接的交互环境。 然而,由于 ssh 本身的限制,Fabric 对于该功能的实现并不能保证直观。这篇文档将详细地讨论这些问题。 注解 不熟悉 Unix stdout、stderr 管道和终端设备的

  • 如何将运行在笔记本电脑中的Jprofiler UI连接到运行在远程服务器中的mule服务器。我在服务器盒中远程安装了jprofiler,并试图运行jpenable以连接到mule服务器,但它无法。这是我得到的错误。

  • 在javax websockets中,我们可以使用如下内容 配置和代码如下: 因此,在handleTextMessage(WebSocketSession会话,TextMessage消息)内部{在此方法内部创建多个线程并发送相同的会话对象和一些其他参数。在每个线程内部,不修改任何与会话对象相关的参数,但正在尝试执行 因此每个线程都试图使用相同的会话对象发送消息..但我面临以下错误