Spring 集成 ConcurrentMetadataStore / RedisMetadataStore

Posted

技术标签:

【中文标题】Spring 集成 ConcurrentMetadataStore / RedisMetadataStore【英文标题】:Spring Integration ConcurrentMetadataStore / RedisMetadataStore 【发布时间】:2015-10-07 19:19:08 【问题描述】:

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

谢谢, 磨难

【问题讨论】:

【参考方案1】:

示例非常简单。您只需将RedisConnectionFactory 提供给所有集群节点的同一Redis 服务器,并将FileSystemPersistentAcceptOnceFileListFilter 注入您的<int-file:inbound-channel-adapter>s:

<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"/>

【讨论】:

如果我们希望一个应用程序的 2 个实例同时选择 2 个不同的文件以实现并发性,这样做会起作用

以上是关于Spring 集成 ConcurrentMetadataStore / RedisMetadataStore的主要内容,如果未能解决你的问题,请参考以下文章

集成框架 - Apache Camel 与 Spring 集成? [关闭]

kafka:spring集成 kafka(springboot集成客户端集成)

Unit08: Spring集成mybatis

shiro集成Spring

Spring集成Mybatis3

Spring与Web环境集成