2011-11-21 111 views
2

我知道主题是将消息广播给客户端。但在ActiveMQ文档中,它提到负载平衡:虚拟主题的ActiveMQ消息组

解释消息组的另一种方式是它提供消费者间消息的粘性负载均衡;其中JMSXGroupID有点像HTTP会话ID或cookie值,而消息代理的行为类似于HTTP负载均衡器。

这里就是我不明白的地方。

是不是广播?

我想要做的是如下: 如果生产者将消息发送给A组,不知何故经纪人控制流量,并且消息“物理”不应该去B组

它甚至有可能与虚拟话题?

回答

3

VirtualTopics为每个主题订阅者创建队列并将消息复制到每个订阅者,因此它将所有消息“广播”给所有订阅者。

ActiveMQ消息组为您提供给定消息组的独占使用者线程(独特的JMSXGroupID)。您无法控制哪个消费者选择每个组,并且同一个消费者线程可以处理多个组。

据我所知,如果您将JMSXGroupID设置为发送给VirtualTopic的消息,它将会到达每个订户的虚拟队列中。但是,如果您有多个线程处理这些队列(maxConcurrentConsumers> 1),那么它们将针对每个消息组进行单线程处理等。

总的来说,如果您希望某些订阅者只处理发送给一个主题,然后使用message selectors来选择这个子集。

+0

这就是我的想法和我的测试程序显示。由于我是这个领域的新手,我很想知道这一点。 – exiter2000