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 集成? [关闭]