#spring-integration #spring-integration-sftp
#пружинная интеграция #пружинная интеграция-sftp
Вопрос:
Я хочу периодически получать все файлы в определенном удаленном каталоге. Я могу получить файл в этом каталоге только один раз после запуска приложения. Не уверен, почему опросник не работает. Это зарегистрировано в проекте spring boot, и версия 2.2.1
@InboundChannelAdapter(value = "sftpReportChannel", poller = @Poller(fixedDelay = "5000")) public String filesForGET(){ return "/etl/biq/autoscore/output/report-data/"; } @Bean public IntegrationFlow sftpGetFlow(SessionFactorylt;ChannelSftp.LsEntrygt; csf) { return IntegrationFlows.from("sftpReportChannel") .handle(Sftp.outboundGateway(csf, AbstractRemoteFileOutboundGateway.Command.LS, "payload") .options(AbstractRemoteFileOutboundGateway.Option.RECURSIVE, AbstractRemoteFileOutboundGateway.Option.NAME_ONLY) //Persistent file list filter using the server's file timestamp to detect if we've already 'seen' this file. .filter(new SftpPersistentAcceptOnceFileListFilter(new SimpleMetadataStore(), "autoscore-meta-data"))) .split() .log(message -gt; "file path -gt; " message.getPayload()) .handle(Sftp.outboundGateway(csf, AbstractRemoteFileOutboundGateway.Command.GET, "'/etl/biq/autoscore/output/report-data/' payload") .options(AbstractRemoteFileOutboundGateway.Option.STREAM)) .handle(new ReportHandler()) //get the payload and create email content and send eamil to recipients .get(); }
Комментарии:
1. Вы уверены, что добавляете новые файлы в этот каталог во время выполнения? Ты сам это сказал
SftpPersistentAcceptOnceFileListFilter
. Таким образом, один и тот же файл из этого каталога не будет взят. Или вы можете изменить этот файл, иmtime
удаленный файл должен быть изменен…2. Спасибо за ваши комментарии. Отличные подсказки! Да, в этом-то и причина. Теперь он работает нормально. Еще раз спасибо, это спасло мне жизнь.
Ответ №1:
Это .filter(new SftpPersistentAcceptOnceFileListFilter(new SimpleMetadataStore(), "autoscore-meta-data")))
позволяет ему работать так, чтобы он не получал один и тот же файл снова и снова при последующих действиях опроса.
Убедитесь, что вы добавляете новые файлы в этот удаленный каталог во время выполнения или изменяете уже обработанный файл. SftpPersistentAcceptOnceFileListFilter
Логика основывается на mtime
свойстве LsEntry
определения того, что файл был изменен, поэтому он пригоден для повторной обработки.