Spring集成ConcurrentMetadataStore/RedisMetadataStore

Spring集成ConcurrentMetadataStore/RedisMetadataStore,spring,spring-boot,spring-batch,spring-integration,Spring,Spring Boot,Spring Batch,Spring Integration,我们有一个应用程序,需要轮询文件夹并处理文件。 我们使用集群环境,在每台服务器上使用多个线程处理文件。我正在使用FileInBoundAdapter、轮询器和任务执行器。但是我看到相同的文件在不同的线程中被处理。阅读Spring集成文档后,ConcurrentMetadataStore/RedisMetadataStore似乎有助于避免此问题。 我试图找到RedisMetadatastoreAPI的示例代码。 有人能帮我提供示例代码或建议不同的解决方案吗 谢谢, 莫汉样本非常简单。您只需为所有群

我们有一个应用程序,需要轮询文件夹并处理文件。 我们使用集群环境,在每台服务器上使用多个线程处理文件。我正在使用FileInBoundAdapter、轮询器和任务执行器。但是我看到相同的文件在不同的线程中被处理。阅读Spring集成文档后,ConcurrentMetadataStore/RedisMetadataStore似乎有助于避免此问题。 我试图找到RedisMetadatastoreAPI的示例代码。 有人能帮我提供示例代码或建议不同的解决方案吗

谢谢,
莫汉

样本非常简单。您只需为所有群集节点向同一个Redis服务器提供
RedisConnectionFactory
,并将
FileSystemTempersistentAcceptonCefileListFilter
注入
即可:

<bean id="redisMetadataStore" class="org.springframework.integration.redis.metadata.RedisMetadataStore">
   <constructor-arg ref="redisConnectionFactory"/>
</bean>

<bean id="acceptOnceFilter" class="org.springframework.integration.file.filters.FileSystemPersistentAcceptOnceFileListFilter">
   <constructor-arg ref="redisMetadataStore"/>
   <constructor-arg value="the_key"/>
</bean>

<int-file:inbound-channel-adapter filter="acceptOnceFilter"/>

示例非常简单。您只需为所有群集节点向同一个Redis服务器提供
RedisConnectionFactory
,并将
FileSystemTempersistentAcceptonCefileListFilter
注入
即可:

<bean id="redisMetadataStore" class="org.springframework.integration.redis.metadata.RedisMetadataStore">
   <constructor-arg ref="redisConnectionFactory"/>
</bean>

<bean id="acceptOnceFilter" class="org.springframework.integration.file.filters.FileSystemPersistentAcceptOnceFileListFilter">
   <constructor-arg ref="redisMetadataStore"/>
   <constructor-arg value="the_key"/>
</bean>

<int-file:inbound-channel-adapter filter="acceptOnceFilter"/>


如果我们希望一个应用程序的两个实例同时拾取两个不同的文件以实现并发性,那么这是否可行如果我们希望一个应用程序的两个实例同时拾取两个不同的文件以实现并发性,那么这是否可行