У меня есть класс конфигурации, который постоянно опрашивает мой каталог FTP. Странное поведение заключается в том, что SftpPersistentAcceptOnceFileListFilter сохраняет файл немедленно в таблице хранилища метаданных, но не мгновенно выбирается для обработки средством запуска заданий. Я должен вручную удалить эту запись из таблицы хранилища метаданных 3-4 раза, а затем файл подбирается. это проблема кода или проблема с сервером FTP? не могу понять ..
Есть идеи, если я что-то упустил?
@Bean
public IntegrationFlow sftpInboundNocFlow(FileNocMessageToJobRequest fileNocMessageToJobRequest) throws Exception {
return IntegrationFlows
.from(s -> s.sftp(this.sftpConfig.sftpSessionFactory())
.filter(this.sftpPersistantNocFilter())
.preserveTimestamp(true)
.remoteDirectory(this.sftpProperties.getRemoteOutboundDirectoryNoc())
.deleteRemoteFiles(this.sftpProperties.isDeleteRemoteFilesEnabled())
.autoCreateLocalDirectory(true)
.localDirectory(new File(FileUtils.getTempDirectoryPath() + this.sftpProperties.getLocalInboundDirectoryNoc())),
e -> e.id("sftpInboundNocAdapter")
.autoStartup(true)
.poller(Pollers.fixedDelay(9000)))
.handle(fileNocMessageToJobRequest)
.handle(this.jobNocLaunchingGateway())
.log(LoggingHandler.Level.WARN, ">>>>>>>>>>headers.id + ': ' + payload")
.channel("nullChannel")
.get();
}
@Bean
public CompositeFileListFilter sftpPersistantNocFilter() {
log.info("sftpPersistantNocFilter is called");
CompositeFileListFilter nocfilters = new CompositeFileListFilter();
nocfilters.addFilter(new SftpPersistentAcceptOnceFileListFilter(this.metadataStore(),"Downloaded_File:"));
nocfilters.addFilter(new SftpRegexPatternFileListFilter(".*\\bNOC\\b.*"));
// nocfilters.addFilter(new SftpSimplePatternFileListFilter("*.csv"));
return nocfilters;
}