ActiveMQ - 结合发布-订阅和点对点
ActiveMQ - Combining Publish-Subscribe and peer-to-peer
有没有办法用 ActiveMQ 实现拓扑,其中 P 是发布者,s_a 是服务 A 的订阅者,s_b1 和 s_b2 是服务 B 的订阅者. 后者被设置在集群中用于负载平衡(因此 s_b1 或 s_b2 得到消息但不是两者)。
有没有一种方法可以将发布-订阅与点对点消息传递相结合,以便其中一个订阅者成为两个消费者正在监听的队列?
谢谢,
吉尔
是的,这是可以做到的。
您可能想查看 Apache ActiveMQ Artemis which implements JMS 2.0 并支持您开箱即用的要求。 JMS 2.0 允许每个主题的多个订阅者对集群进行负载平衡。
对于 ActiveMQ 和 JMS 1.0,您可以改用 Virtual Destinations。他们使用命名约定。
如果您将主题命名为:VirtualTopic.StockPrice
并向其发布消息,您将能够使用名为 Consumer.Consumer1.VirtualTopic.StockPrice
、Consumer.Consumer2.VirtualTopic.StockPrice
等的队列。Consumer1 可以是任何内容。
您可以重新配置 ActiveMQ 以使用其他名称作为虚拟目标(前缀、后缀等)。
有没有办法用 ActiveMQ 实现拓扑,其中 P 是发布者,s_a 是服务 A 的订阅者,s_b1 和 s_b2 是服务 B 的订阅者. 后者被设置在集群中用于负载平衡(因此 s_b1 或 s_b2 得到消息但不是两者)。
有没有一种方法可以将发布-订阅与点对点消息传递相结合,以便其中一个订阅者成为两个消费者正在监听的队列?
谢谢,
吉尔
是的,这是可以做到的。
您可能想查看 Apache ActiveMQ Artemis which implements JMS 2.0 并支持您开箱即用的要求。 JMS 2.0 允许每个主题的多个订阅者对集群进行负载平衡。
对于 ActiveMQ 和 JMS 1.0,您可以改用 Virtual Destinations。他们使用命名约定。
如果您将主题命名为:VirtualTopic.StockPrice
并向其发布消息,您将能够使用名为 Consumer.Consumer1.VirtualTopic.StockPrice
、Consumer.Consumer2.VirtualTopic.StockPrice
等的队列。Consumer1 可以是任何内容。
您可以重新配置 ActiveMQ 以使用其他名称作为虚拟目标(前缀、后缀等)。