【发布时间】:2018-08-27 22:17:48
【问题描述】:
有一个 Spring Boot 应用程序,它将文件从源路径路由到目标路径。尝试运行多个指向同一源路径的应用程序实例。期望只有一个实例应该处理一个文件,一旦处理,它将从源中删除。同一文件不应被其他实例处理。
由于文件 nio 锁不工作,建议考虑使用基于共享 ConcurrentMetadataStore() - PropertiesPersistingMetadataStore 的 FileSystemPersistentAcceptOnceFileListFilter。预计,这种方式真的只有一个实例会拿起文件进行处理。所有其他人将跳过它并转到下一个文件。
但是两个实例选择的一些文件选择/轮询相同的文件并将其处理到目标路径。
有什么建议吗?
<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>
【问题讨论】:
标签: java spring spring-boot spring-integration spring-integration-sftp