我通过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();
}
答案 0 :(得分:0)
我不确定你的意思是“期待abc.000.txt作为下一个文件”;过滤器不知道您有一系列文件。
但是,只要上次修改的文件时间戳更改,新文件就会通过过滤器。