3

我希望构建一个发布/订阅分布式消息传递框架,该框架可以通过代理级别的一些智能来管理大量消息流量。我不知道是否有描述这个的拓扑,但这是我要追求的模型:

示例模型 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。我发现这两个内容丰富但看似矛盾的帖子:

  1. 说示例模型 A 是/应该被隐式支持: 具有 ActiveMQ 代理网络的 JMS 消费者 “这意味着您选择一个代理,连接到它,然后让代理网络在它们之间进行排序。理论上。”

  2. 表示不支持示例模型 A: 集群应用程序服务器中的 JMS 主题订阅者如何接收消息? “在不同应用服务器上运行的所有 PropertiesSubscriber 实例都会收到该消息。”

任何建议将不胜感激。

非常感谢您阅读我的帖子,

基因

4

2 回答 2

0

以下是一些可以使用 GlassFish 服务器解决您的问题的链接。

http://docs.sun.com/app/docs/doc/819-7759/aerdj?l=en&a=view

希望能帮助到你。

于 2010-05-13T21:28:30.643 回答
0

WebSphere MQ 满足此要求,前提是:

  • 两个队列管理器正在参与一个 WebSphere MQ 集群;
  • 并且消息主题要么被通告给集群,要么是被通告给集群的主题的子主题。

假设满足这些要求,则发布仅流向存在活动订阅的 QMgrs。此外,可以通过管理方式指定出版物的范围。请注意,这适用于发布或订阅的主题,而不是消息属性。QMgr 将基于属性在本地过滤消息,但按属性路由是 WebSphere Message Broker 功能。(在 WebSphere 系列中,WMQ 是基础传输,其中 WMB 是上面的一层并提供转换、路由等)

于 2010-05-10T20:50:34.093 回答