什么是ActiveMQ Virtual Topic

什么是ActiveMQ Virtual Topic,第1张

什么是ActiveMQ Virtual Topic

什么是Topic:Topic实现了发布/订阅模式(pub/sub模式)。归属于多个不同方向的消费者可以同时消费生产者向Topic中发送的消息

比如:订单场景下,用户下单成功后,会发送两个通知:1. 通知用户下单成功、2. 通知库房发货。这是一条“下单成功”的消息被两个不同的消费方消费了。Topic就是为了解决这种多方消费场景而来的。那么为什么ActiveMQ还会有Virtual Topic的概念呢?这两者之间又有什么区别呢?

首先说一下普通Topic的问题:上面的订单场景中,给库房发通知的消费者只能有一个运行中的实例,这时,如果该服务实例宕机了,那么就会出现消息无法及时消费的问题(此时需要人工处理把服务启动起来),因此这种情况下服务稳定性比较低。

所以ActiveMQ引入了Virtual Topic这个概念,Virtual Topic中的一个消费方可以同时有多个消费者,比如:给库房发通知的消费者可以同时运行多个,这几个在运行时,只会有一个真正接收消息,当这个活跃的实例无法消费消息时,ActiveMQ会在库房消费者的几个实例里寻找另一个可用的,并把消息发送给它。这样就能够解决消息消费的负载均衡、稳定性问题了。

因为JMS1.1版本中的Topic没有共享的Topic消费者的概念,所有ActiveMQ提出了自己的Virtual Topic的概念以及其使用的方式。在JMS2.0里已经支持通过设置share的参数的方式来解决这个问题。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5683417.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存