我理解主题是向客户端广播消息。但是在ActiveMQ文档中,它描述了负载平衡:
解释消息组的另一种方法是它为消费者提供消息的粘性负载平衡;其中JMSXGroupID有点像HTTP会话ID或cookie值,消息代理就像HTTP负载均衡器一样。
这是我不明白的地方。
不是广播吗?
我想做的是以下内容: 如果生产者向A组发送消息,那么代理人会以某种方式控制流量,并且“物理上”消息不应该转到B组。
甚至可以使用Virtual Topic吗?
答案 0 :(得分:3)
VirtualTopics为每个主题订阅者创建队列并将消息复制到每个主题,因此它将所有消息“广播”给所有订阅者。
ActiveMQ消息组为您提供给定消息组(不同的JMSXGroupID)的独占消费者线程。您无法控制哪个消费者选择每个组,同一个消费者线程可以处理多个组。
据我所知,如果在发送到VirtualTopic的消息上设置JMSXGroupID,它将到达每个订户的虚拟队列。但是,如果您有多个线程从这些队列处理(maxConcurrentConsumers> 1),那么它们将是每个消息组的单线程等。
总体而言,如果您希望某些订阅者只处理发送到某个主题的邮件子集,请使用message selectors向下选择此子集。