在Clustered Environment中使用指向同一MessageStore的Spring Integration Aggregator

时间:2018-01-24 19:43:01

标签: redis spring-integration

我们有Spring Integration Aggregator组件在多个实例中运行,但都指向同一个JDBCMessageStore(oracle)。我知道我们可以根据主机名设置Region,以便聚合器聚合与特定主机相关的消息。

但是,我们是否可以在所有实例中使用DEFAULT区域,但仍然只有一个实例聚合了消息存储中的所有消息?

我正在阅读“Redis Lock Registry”,“Gemfire Lock Registry”和“Zookeeper Lock Registry”。他们是否需要创建/配置相关的MessageStore?或者我可以将它们与现有的JDBCMessageStore(oracle)一起使用。

使用上述Lock Registry Mechanisms有什么缺点吗?

2 个答案:

答案 0 :(得分:0)

他们不会得到帮助;你需要使用不同的地区。如果跨实例使用相同的区域,则必须使用共享锁注册表,但在这种情况下,任何实例都可以添加和/或释放一组消息。

答案 1 :(得分:0)

谢谢加里。这些不同的LockRegistry用于什么? https://docs.spring.io/spring-integration/docs/4.2.3.RELEASE/reference/html/messaging-routing-chapter.html#aggregator

(20)对org.springframework.integration.util.LockRegistry bean的引用;用于获取基于groupId的Lock,用于MessageGroup上的并发操作。默认情况下,使用内部DefaultLockRegistry。使用分布式LockRegistry(例如ZookeeperLockRegistry)可确保只有一个聚合器实例同时对一个组进行操作。有关更多信息,请参见第24.11节“Redis Lock Registry”,第16.6节“Gemfire Lock Registry”,第37.3节“Zookeeper Lock Registry”。