重复模式文件的FtpPersistentAcceptOnceFileListFilter

时间:2016-12-12 15:32:54

标签: spring-integration

我通过FTP从文件系统中提取文件,该文件系统按顺序循环遍历文件名。例如:

abc.000.txt
abc.001.txt
abc.002.txt
...
abc.999.txt

然后它将返回到abc.000.txt。

我正在使用带有redis的FtpPersistentAcceptOnceFileListFilter作为metadataStore。我怎么能让它知道abc.999.txt后abc.000.txt是下一个文件?

我的配置:

@Bean
public FtpPersistentAcceptOnceFileListFilter ftpPersistantFilter() {
    return new FtpPersistentAcceptOnceFileListFilter(metadataStore(), "ftpPersistentAcceptOnce");
}

@Bean
public Expression remoteDirectory() {
    return new LiteralExpression(this.remoteDirectory);
}

@Bean
public IntegrationFlow ftpInboundFlow() {
    DateTime currentUtcDay = new DateTime(DateTimeZone.UTC);
    return IntegrationFlows
            .from(s -> s.ftp(ftpSessionFactory())
                            .preserveTimestamp(true)
                            .remoteDirectoryExpression(remoteDirectory())
                            .filter(ftpPersistantFilter())
                            .localFilename(f -> (currentUtcDay.toString("YYYYMMdd")) + "." + f)
                            .localDirectory(new File(this.localDirectory)),
                    e -> e.id("ftpInboundAdapter").autoStartup(true))
            .channel(MessageChannels.queue("ftpInboundResultChannel"))
            .get();
}

1 个答案:

答案 0 :(得分:0)

我不确定你的意思是“期待abc.000.txt作为下一个文件”;过滤器不知道您有一系列文件。

但是,只要上次修改的文件时间戳更改,新文件就会通过过滤器。