【问题标题】:FtpInboundFileSynchronizer.setDeleteRemoteFiles(true) not deleting remote files after transferFtpInboundFileSynchronizer.setDeleteRemoteFiles(true) 传输后不删除远程文件
【发布时间】:2016-12-28 16:24:56
【问题描述】:

我正在尝试使用 spring boot,集成 ftp 示例(http://docs.spring.io/spring-integration/reference/html/ftp.html,15.5.1)。我能够从远程目录中读取文件,它不会删除带有标志 setDeleteRemoteFiles(true) 的文件。如果我缺少设置任何标志来删除远程文件,请告诉我。

@Bean
public SessionFactory<FTPFile> ftpSessionFactory() {
    DefaultFtpSessionFactory sf = new DefaultFtpSessionFactory();
    sf.setHost("localhost");
    sf.setPort(21);
    sf.setUsername("sudaredd");
    sf.setPassword("");
    return new CachingSessionFactory<FTPFile>(sf);
}

 @Bean
    public FtpInboundFileSynchronizer ftpInboundFileSynchronizer() {
        FtpInboundFileSynchronizer fileSynchronizer = new FtpInboundFileSynchronizer(ftpSessionFactory());
        fileSynchronizer.setDeleteRemoteFiles(true);
        fileSynchronizer.setRemoteDirectory("");
        fileSynchronizer.setFilter(new FtpSimplePatternFileListFilter("*"));
        return fileSynchronizer;
    }
  @Bean
    @InboundChannelAdapter(channel = "ftpChannel", poller = @Poller(fixedDelay = "5000"))
    public MessageSource<File> ftpMessageSource() {
        FtpInboundFileSynchronizingMessageSource source =
                new FtpInboundFileSynchronizingMessageSource(ftpInboundFileSynchronizer());
        source.setLocalDirectory(new File("ftp-inbound"));
        source.setAutoCreateLocalDirectory(true);
        source.setLocalFilter(new AcceptOnceFileListFilter<File>());
        return source;
    }

【问题讨论】:

    标签: spring-integration


    【解决方案1】:

    所有配置看起来都不错。

    尝试为org.springframework.integration 类别打开DEBUG 以跟踪行为。

    OTOH,请确保您的 FTP 服务器支持删除操作,并且您的用户确实有权执行该操作。

    由于@InboundChannelAdapter 通过taskScheduler 执行其任务,您可能会错过日志中的错误。

    如果您能够调试代码并在AbstractInboundFileSynchronizer.copyFileToLocalDirectory() 中放置断点以遵循逻辑并确定可能出现的问题,那就太好了。

    【讨论】:

    • 如果我们在本地和远程有相同的文件名,它会从本地目录中提取文件并处理给服务激活器。如果我从本地目录中删除文件,那么它会复制到本地并删除远程文件。
    • 好的!那么,问题是什么?这是预期的行为。如果您想以任何方式删除远程文件,请考虑在服务后直接使用“RemoteFileTemplate”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 2014-04-06
    • 2015-03-03
    相关资源
    最近更新 更多