我有两个过滤器regexFilter和lastModified。
return IntegrationFlows.from(Sftp.inboundAdapter(inboundSftp)
.localDirectory(this.getlocalDirectory(config.getId()))
.deleteRemoteFiles(true)
.autoCreateLocalDirectory(true)
.regexFilter(config.getRegexFilter())
.filter(new LastModifiedLsEntryFileListFilter())
.remoteDirectory(config.getInboundDirectory())
, e -> e.poller(Pollers.fixedDelay(60_000)
.errorChannel(MessageHeaders.ERROR_CHANNEL).errorHandler((ex) -> {
})))
通过谷歌搜索,我了解我必须对regex使用CompositeFileListFilter,因此将代码更改为
.filter(new CompositeFileListFilter().addFilter(new RegexPatternFileListFilter(config.getRegexFilter())))
已编译,但在运行时会引发错误,并且通道弯曲,并且出现相同的错误
.filter(ftpPersistantFilter(config.getRegexFilter()))
.
.
.
public CompositeFileListFilter ftpPersistantFilter(String regexFilter) {
CompositeFileListFilter filters = new CompositeFileListFilter();
filters.addFilter(new FtpRegexPatternFileListFilter(regexFilter));
return filters;
}
我只想根据文件名进行过滤。同一远程文件夹有2个流,并且都使用相同的cron进行轮询,但应选择它们的相关文件。
请显示您的最终流程。我看不到您在LastModifiedLsEntryFileListFilter
中使用CompositeFileListFilter
...您绝对不能同时使用regexFilter()
和filter()
-最后一个获胜。为避免混淆,我们建议使用filter()
并用CompositeFileListFilter
或ChainFileListFilter
组合所有内容。
另外,您所提到的错误是什么。