我希望构建一个发布/订阅分布式消息传递框架,该框架可以通过代理级别的一些智能来管理大量消息流量。我不知道是否有描述这个的拓扑,但这是我要追求的模型:
示例模型 A
A)有两个正在运行的消息代理(如果可能,最好都在本地主机上,以便于演示):
- 经纪人-A
- 经纪人-B
B) 每个经纪人将有 2 个听众和 1 个发布者。
示例图
[订阅者 A1,订阅者 A2,发布者 A1] <--> BrokerA <--> BrokerB <--> [发布者 B1,订阅者 B1,订阅者 B2]
如果消息-X 发布到代理 A 并且在代理 B 上的侦听器中没有订阅者(通过消息选择器或代理路由规则中的标准),则该消息 X 将永远不会发布到代理 B。
否则,代理 A 会将消息发布到代理 B,其中代理 B 的侦听器/订阅者/服务之一根据订阅标准期待该消息。
聚类是正确的方法吗?
起初,我得出的结论是,我需要“代理集群”概念来支持这一点。但是,据我了解,集群的典型使用需要:
- 跨所有代理的消息冗余...或
- 竞争消费者模式
...并且这些都不满足示例模型 A 中的要求。
什么是正确的方法?
我的问题是,有人知道支持我描述的模型的 JMS 实现吗?
我浏览了所有的 stackoverflow 帖子标题以进行搜索:JMS 和 Cluster。我发现这两个内容丰富但看似矛盾的帖子:
说示例模型 A 是/应该被隐式支持: 具有 ActiveMQ 代理网络的 JMS 消费者 “这意味着您选择一个代理,连接到它,然后让代理网络在它们之间进行排序。理论上。”
表示不支持示例模型 A: 集群应用程序服务器中的 JMS 主题订阅者如何接收消息? “在不同应用服务器上运行的所有 PropertiesSubscriber 实例都会收到该消息。”
任何建议将不胜感激。
非常感谢您阅读我的帖子,
基因