Я читаю корневой каталог в FileReadingMessageSource из Spring Integration для извлечения текущих файлов. Сценарий заключается в том, что в корневом каталоге могут существовать несколько подкаталогов. WatchServiceDirectoryScanner из SI 4.3.1 используется для сбора любых файлов, созданных в любом новом подкаталоге.WatchServiceDirectoryScanner не вытягивает новые файлы, созданные после первого опроса
@Bean
public MessageSource<File> fileReadingMessageSource() {
CompositeFileListFilter<File> filters = new CompositeFileListFilter<>();
filters.addFilter(new SimplePatternFileListFilter("pattern*"));
//filters.addFilter(new LastModifiedFileListFilter());
FileReadingMessageSource fileSource = new FileReadingMessageSource();
String filePath = "root-directory";
fileSource.setDirectory(new File(filePath));
fileSource.setFilter(filters);
fileSource.setUseWatchService(true);
fileSource.setWatchEvents(FileReadingMessageSource.WatchEventType.CREATE,FileReadingMessageSource.WatchEventType.MODIFY,FileReadingMessageSource.WatchEventType.DELETE);
return fileSource;
}
@Bean
public IntegrationFlow readDirectoryFlow() {
return IntegrationFlows.from(
fileReadingMessageSource(),
e -> e.poller(Pollers.cron("*/5 * * * * *")))
.channel(fileInputChannel())
.handle(tailerRestart)
.handle(System.out::println)
.get();
}
На первом опросе, все файлы, соответствующие шаблону доступны через Message Resource, но если какие-либо новые файлы, созданные позже в любом новом подкаталоге затем Message Resource не в состоянии выбрать новые базы соответствующих файлов.
я вижу следующее DEBUG сообщение в журнале
DEBUG SourcePollingChannelAdapter - не получил сообщение в ходе опроса, возвращая «ложь»
Что может быть не хватает?
спасибо за тестируя код. Я изменил активацию restartTailer-активатора для возврата файла. Проблема, которую я чувствую, заключается в том, что WatchServiceDirectoryScanner заполняет очередь toBeReceived только один раз в FileReadingMessageSource. Если файлы/подкаталоги добавлены позже, невозможно просмотреть сообщение для этих файлов в новом подкаталоге.У нас есть бесконечный опрос в WatchServiceDirectoryScanner для просмотра всех событий из Java 7 WatchService? –
Пожалуйста, найдите «ОБНОВЛЕНИЕ» в моем ответе. –