Согласно этому do c не удалось найти правильный процесс для повторной загрузки локально удаленного файла с удаленного SFTP.
Требуется удалить локальный файл, который уже был получен с удаленного SFTP, и использовать sftp-inbound-adapter ( конфигурация DSL ) для повторной загрузки того же файла, когда это необходимо. В этой реализации MetadataStore
не сохраняется в какой-либо внешней системе, например PropertiesPersistingMetadataStore
или Redis Metadata Store . Итак, согласно do c, MetadataStore
хранится в In-Memory .
Не удалось найти способ удалить метаданные этого удаленного файла из MetadataStore
, чтобы повторно получить локально удаленный файл с помощью file_name
. И понятия не имею, как должен быть реализован этот обратный вызов removeRemoteFileMetadata()
( в соответствии с этим do c).
Класс конфигурации содержит следующие:
@Bean
public IntegrationFlow fileFlow() {
SftpInboundChannelAdapterSpec spec = Sftp.inboundAdapter(sftpConfig.getSftpSessionFactory())
.preserveTimestamp(true)
.patternFilter(Constants.FILE_NAME_CONVENTION)
.remoteDirectory(sftpConfig.getSourceLocation())
.autoCreateLocalDirectory(true)
.deleteRemoteFiles(false)
.localDirectory(new File(sftpConfig.getDestinationLocation()));
return IntegrationFlows
.from(spec, e -> e.id("sftpInboundAdapter").autoStartup(false)
.poller(Pollers.fixedDelay(5000).get()))
.channel(MessageChannels.direct().get())
.handle(message -> {
log.info("Fetching File : " + message.getHeaders().get("file_name").toString());
})
.get();
}