Java FileSystemAcceptonFileListFilter不工作
有一个spring引导应用程序,它将文件从源路径路由到目标路径。尝试运行多个指向同一源路径的应用程序实例。只需要一个实例就可以处理一个文件,一旦处理完毕,它将从源代码中删除。其他实例不应处理同一文件Java FileSystemAcceptonFileListFilter不工作,java,spring,spring-boot,spring-integration,spring-integration-sftp,Java,Spring,Spring Boot,Spring Integration,Spring Integration Sftp,有一个spring引导应用程序,它将文件从源路径路由到目标路径。尝试运行多个指向同一源路径的应用程序实例。只需要一个实例就可以处理一个文件,一旦处理完毕,它将从源代码中删除。其他实例不应处理同一文件 由于文件NIO锁定器不工作,因此建议使用基于共享并发Meta ADATAODE()的FraseSistEntRePotoCeFielististField:PrimeTestExchange Meta ADATASTORE。预计,这种方式实际上只有一个实例将拾取文件进行处理。所有其他人都将跳过它并转
由于文件NIO锁定器不工作,因此建议使用基于共享并发Meta ADATAODE()的FraseSistEntRePotoCeFielististField:PrimeTestExchange Meta ADATASTORE。预计,这种方式实际上只有一个实例将拾取文件进行处理。所有其他人都将跳过它并转到下一个文件
但两个实例拾取的一些文件拾取/轮询同一个文件并将其处理到目标路径 有什么建议吗 <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>
首先,不清楚为什么同一台机器上会有同一应用程序的多个实例。对于同一个CPU和RAM,同一个应用程序肯定不会有性能提升 另一个担忧是,
PropertiesPersistingMetadataStore
不适合分布式计算。您必须考虑使用共享数据库使用一些存储实现。
此外,您还可以将当前的解决方案与您希望的解决方案非常接近:
/**
* Determine whether the metadataStore should be flushed on each update (if {@link Flushable}).
* @param flushOnUpdate true to flush.
* @since 4.1.5
*/
public void setFlushOnUpdate(boolean flushOnUpdate) {
对于所提到的
文件系统TempersistentAcceptonCefileListFilter
,为true
。这样,每次写入存储后,PropertiesPersistingMetadataStore
将闪现到目标.properties
文件。但是在初始化PropertiesPersistingMetadataStore的spring bean后(在propertiesSet之后),PropertiesPersistingMetadataStore不会更新。这意味着PropertiesPersistingMetadataStore将随着另一个实例更新该文件而更新。这是正确的。考虑使用上面提到的<代码> FielSistMeStEntRealTyCEFielistFixs<代码>是NoFielLoCKER、PrimeStestEngEndoDATASTROR和SimeMeMeDATASTORT不适合多个并发实例(集群)吗?GemfireMetadataStore、JdbcMetadataStore、MongoDbMetadataStore、RedisMetadataStore和ZookeeperMetadataStore是否可以考虑用于集群应用程序?内存中的任何内容都不适用于集群。你肯定需要考虑一下什么是共享的