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

Spring集成FTP使用java DSL递归读取文件

丁宏浚
2023-03-14

我想配置一个带有JavaDSL的网关,以递归方式从FTP服务器读取所有文件,因为它们位于不同的文件夹中。

我怎么做?请给我一个特别的代码示例

共有1个答案

游鸣
2023-03-14

大概是这样的:

    @Bean
    public FtpOutboundGatewaySpec ftpOutboundGateway() {
        return Ftp.outboundGateway(this.ftpSessionFactory,
                AbstractRemoteFileOutboundGateway.Command.MGET, "payload")
                .options(AbstractRemoteFileOutboundGateway.Option.RECURSIVE)
                .regexFileNameFilter("(subFtpSource|.*1.txt)")
                .localDirectoryExpression("@ftpServer.targetLocalDirectoryName + #remoteDirectory")
                .localFilenameExpression("#remoteFileName.replaceFirst('ftpSource', 'localTarget')");
    }

    @Bean
    public IntegrationFlow ftpMGetFlow(AbstractRemoteFileOutboundGateway<FTPFile> ftpOutboundGateway) {
        return f -> f
                .handle(ftpOutboundGateway)
                .channel(remoteFileOutputChannel());
    }

    @Bean
    public PollableChannel remoteFileOutputChannel() {
        return new QueueChannel();
    }

从项目的测试用例复制/粘贴。

 类似资料:
  • 使用此更新的代码,我得到以下错误:

  • 我可以通过使用SFTP入站通道适配器与轮询器和SFTPPersistentAcceptonCEFileListFilter相结合来完成所有这些。 关键是我需要递归地完成这一操作,我相信这将使我离开SFTP入站网关的领域,进入SFTP出站网关。 但是,除非我错过了什么,否则这是没有帮助的。我需要一个定期的入站操作,所以我不能使用一个轮询器与SFTP出站网关。理想情况下,我不想关心远程目录结构的命名模

  • 我目前正在使用Spring集成实现一些导入/导出机制,总的来说进展很顺利,但在功能方面似乎存在差距,我不了解: 有Spring集成文件轮询目录,写入文件,...我可以用它来轮询一个目录,并获得一个

  • 当msg处理抛出异常时,如何有效地支持JMS重新交付? 我有一个使用JMS(ActiveMQ)的流,它具有配置为允许n次重新传递尝试的连接工厂。 我希望在处理msg时出现任何错误,导致msg在connectionFactory配置允许的情况下被放回重新交付,然后在最大重新交付尝试用尽时,交付给DLQ。与AMQ保持一致。 对一个相关SO问题的回答意味着我可能会有一个重新抛出的错误通道,它应该触发重新

  • 我们需要解析大量传入文件(到一个目录中),并对其进行处理,然后将结果放入每个文件的AWS动画中。 文件的频率为每天60000次,文件每15秒到达一次。每个文件可能包含大约1000个条目。 > spring集成能否处理此负载? 处理此类卷会有任何问题吗? 当文件进入入站通道适配器时,我们可以为每个文件执行服务激活器吗? 我认为我们需要在poller的频道上使用任务执行器?有什么例子吗? 任务执行者是

  • 我尝试了出站网关,如: 中所述 https://github.com/spring-projects/spring-integration-samples/blob/master/basic/ftp/src/test/resources/meta-inf/spring/integration/ftpoutboundgatewaysample-context.xml 和 http://forum.s