Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FileSystemAcceptonFileListFilter不工作_Java_Spring_Spring Boot_Spring Integration_Spring Integration Sftp - Fatal编程技术网

Java FileSystemAcceptonFileListFilter不工作

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。预计,这种方式实际上只有一个实例将拾取文件进行处理。所有其他人都将跳过它并转

有一个spring引导应用程序,它将文件从源路径路由到目标路径。尝试运行多个指向同一源路径的应用程序实例。只需要一个实例就可以处理一个文件,一旦处理完毕,它将从源代码中删除。其他实例不应处理同一文件

由于文件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是否可以考虑用于集群应用程序?内存中的任何内容都不适用于集群。你肯定需要考虑一下什么是共享的