Есть приложение для весенней загрузки, которое направляет файл от исходного пути к целевому пути. Попытка запустить более одного экземпляра приложения, указывающего на один и тот же исходный путь. Ожидается, что только один экземпляр должен обработать файл, и после обработки он будет удален из источника. Этот же файл не должен обрабатываться другим экземпляром.
Поскольку файл nio locker не работает, рекомендуется использовать FileSystemPersistentAcceptOnceFileListFilter, основанный на общем ConcurrentMetadataStore () - PropertiesPersistingMetadataStore. Ожидается, что таким образом только один экземпляр получит файл для обработки. Все остальные пропустят его и перейдут к следующим файлам.
Но некоторые файлы, выбранные обоими экземплярами, выбирают / опрашивают один и тот же файл и обрабатывают его по целевому пути.
Есть предложения?
<bean id="metadatastore" class = "org.springframework.integration.metadata.PropertiesPersistingMetadataStore">
<property name="basedirectory" value ="${java.io.tmpdir}/metadata"/>
</bean>
<bean id="inboundfilter" class = "org.springframework.integration.file.filters.CompositeFilelistFilter">
<constructor-arg>
<list>
<bean class = "org.springframework.integration.file.filters.FileSystemPersistentAcceptOnceFilelistFilter">
<constructor-arg name= "store" ref="metadatastore"/>
<!-- Filename prefix constructor. No prefix name in my case .so made it empty-->
<constructor-arg value = ""/>
</bean>
<bean class = "org.springframework.integration.file.filters.RegexPatternFilelistFilter">
<constructor-arg value="${regex}"/>
</bean>
</list>
</constructor-arg>
</bean>