简单总结一下 ActiveMQ 的 VirtualTopic 机制

原创
2016/09/14 15:11
阅读数 2.2K

文档地址:http://activemq.apache.org/virtual-destinations.html

项目中有在使用,所以总结一下。

JMS 有 Topic 这个概念,这是所有了解 JMS 都知道的一个概念。但是可持久化的 Topic 在 JMS 规范中有个限制,那就是对于同一个 Client ID 的 Subscriber,同一时刻只能有一个是有效的。这就造成如果直接使用 Topic,负载均衡等特性就无法实现。但是 Queue 没有这个限制。

解决这个问题有两种方法,一种是用不同的 Client ID(动态生成),另一个就是使用 ActiveMQ 的 VirtualTopic。

默认配置下,一个 Destination 配置成 VirtualTopic.xxx 的名字时,订阅类似 Consumer.A.VirtualTopic.xxx、Consumer.B.VirtualTopic.xxx、Consumer.C.VirtualTopic.xxx 等 Queue 的消费者都会受到这个 VirtualTopic 的消息(每个 Queue 里还是只有一个 Consumer 能收到消息。类似与 Kafka 的 Consumer Group)。这样就解决了持久化的 Topic Client ID 唯一有效的限制。

我觉得这个概念大概了解就可以了。现在 ActiveMQ 正在越来越多地被 RabbitMQ 和 Apache Kafka 取代。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部