2017-01-18 3 views
1

Мое приложение - приложение Spring Boot. У меня есть каталог с именем abc. Я создал входящий адаптер для чтения каталога для новых файлов. Предположим, что в каталоге находится файл aa.txt. Он подбирается адаптером. Теперь, допустим, снова новый файл с тем же именем был сохранен в каталоге. Но теперь адаптер не запускается.file: inbound-channel-adapter prevent-duplicates = "false" не работает в приложении весенней загрузки

<file:inbound-channel-adapter id="inAdapter" 
    directory="file:abc" filter="txtFiles" 
    auto-startup="true" prevent-duplicates="false"> 
    <int:poller id="poller" fixed-delay="5000" /> 
</file:inbound-channel-adapter> 

Я установил prevent-duplicates=false. Тем не менее, этот файл не получает. Почему это происходит? Каково решение?

+0

- это еще один файл типа 'ab.txt', вызываемый после вызова' aa.txt'? – Patrick

+0

, если появляется другой файл «ab.txt», он вызывается. –

+0

Вы можете включить ведение журнала отладки для интеграции Spring - это может дать вам и понять, что происходит. –

ответ

0

По умолчанию AcceptOnceFileListFilter не рассматривает атрибут lastModified file, просто имя файла.

FileSystemPersistentAcceptOnceFileListFilter сравнивает временную метку, поэтому передаст измененный файл с тем же именем.

См. the documentation.

AcceptOnceFileListFilter сохраняет свое состояние в памяти. Если вы хотите, чтобы состояние выдержало перезагрузку системы, вместо этого используйте вместо этого FileSystemPersistentAcceptOnceFileListFilter. Этот фильтр хранит принятые имена файлов в реализации MetadataStore (раздел 9.5, «Магазин метаданных»). Этот фильтр совпадает с именем файла и измененным временем.

+0

Можете ли вы поделиться какой-либо информацией или ссылкой, которая показывает, как использовать FileSystemPersistentAcceptOnceFileListFilter? –

1

У меня есть решение. Я установил prevent-duplicates = false для компонента фильтра (FileListFilterFactoryBean), а не входящего-channel-adapter &.

+0

Наконец-то настоящее решение, спасибо! Работает сейчас! – BAER