Spring IntegrationFlow正则表达式过滤器不起作用

问题描述 投票:0回答:1

我有两个过滤器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进行轮询,但应选择它们的相关文件。

spring-integration spring-integration-dsl spring-integration-sftp
1个回答
0
投票

请显示您的最终流程。我看不到您在LastModifiedLsEntryFileListFilter中使用CompositeFileListFilter ...您绝对不能同时使用regexFilter()filter()-最后一个获胜。为避免混淆,我们建议使用filter()并用CompositeFileListFilterChainFileListFilter组合所有内容。

另外,您所提到的错误是什么。

© www.soinside.com 2019 - 2024. All rights reserved.