인바운드 스트림 기능을 이용하려면 통합 플로우를 4.3.12에서 5.0.0.RC1로 업그레이드했습니다. 나는 patternFilter와 regexFilter가 모두 필터링되지 않는다는 것을 알고 있습니다. 스트리밍 인터페이스가 아니라는 것을 확인하기 위해 필자는 파일 기반 인터페이스를 사용해 보았고 동일한 결과를 보았습니다. 4.3.12에서FTP IntegrationFlows 필터가 Spring Integration 5.0.0.RC1에서 작동하지 않음
나는 내 파일 기반의 흐름에 의해 정의했다 :
return IntegrationFlows
.from(Ftp.inboundAdapter(ftpSessionFactory())
.preserveTimestamp(true)
.remoteDirectoryExpression(remoteDirectory())
.regexFilter("sn\\.[0-9]{4}\\.txt$")
.filter(ftpPersistantFilter())
.localFilter(fileSystemPersistantFilter())
.localFilename(f -> (currentUtcDay.toString("YYYYMMdd")) + "." + f)
.localDirectory(new File(this.localDirectory)),
e -> e.id("ftpInboundAdapter").poller(Pollers.fixedDelay(100)))
.channel(MessageChannels.queue("ftpInboundResultChannel"))
.get();
그것은 필터링되지 않습니다 일관성을
return IntegrationFlows
.from(s -> s.ftp(ftpSessionFactory())
.preserveTimestamp(true)
.remoteDirectoryExpression(remoteDirectory())
.regexFilter("sn\\.[0-9]{4}\\.txt$")
.filter(ftpPersistantFilter())
.localFilter(fileSystemPersistantFilter())
.localFilename(f -> (currentUtcDay.toString("YYYYMMdd")) + "." + f)
.localDirectory(new File(this.localDirectory)),
e -> e.id("ftpInboundAdapter").autoStartup(true))
.channel(MessageChannels.queue("ftpInboundResultChannel"))
.get();
, 여기 5.0.0.RC1에서 같은 정의는 5.0.0.RC1. 필터 구성이 변경 되었습니까? 내가해야 할 일이 더 있니?
편집 : 다음 사람에게 다음 수정 프로그램이 있습니다.
@Bean
public FtpPersistentAcceptOnceFileListFilter ftpPersistantFilter() {
return new FtpPersistentAcceptOnceFileListFilter(metadataStore(), "ftpPersistentAcceptOnce");
}
에 :
@Bean
public CompositeFileListFilter ftpPersistantFilter() {
CompositeFileListFilter filters = new CompositeFileListFilter();
filters.addFilter(new FtpPersistentAcceptOnceFileListFilter(metadataStore(), "ftpPersistentAcceptOnce"));
filters.addFilter(new FtpRegexPatternFileListFilter(regexFilter));
}
감사합니다. Artem! 제안 된 변경 사항으로 내 질문을 업데이트했으며 완벽하게 작동합니다. – brentlemons