在使用RocketMQ同一个topic不同tag,订阅关系组(subscriptionTable)中为什么只能对应一个消费者对象?
根据看源码和网上查询得知,Subcription对象中只equals判断topic属性。关于问题的源码解析:阿里云RocketMQ的订阅类Subscription的HashCode及Equals的设计问题
根据图片可以看到,在debug过程中,订阅关系中只有一个对象,但是被我配置了注解(topic相同但tag不同的对象)有8个。
我想请问如何在现有业务条件不变的情况下,将8个对象和8个Subcription注册进table中,并实现8个消费对象监听8个不同tag的业务吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
RocketMQ 同一个 topic 不同 tag,订阅关系组中只能对应一个消费者对象,是因为 RocketMQ 的订阅关系是基于 tag 来进行划分的。当一个 topic 有多个 tag 时,每个 tag 对应一个订阅关系组。而一个消费者对象只能属于一个订阅关系组,因此同一个 topic 不同 tag,订阅关系组中只能对应一个消费者对象。
如果需要对同一个 topic 不同 tag 的消息进行消费,可以创建多个订阅关系组,每个订阅关系组使用不同的消费者对象进行消费。也可以使用 Consumer Group 的方式,将多个消费者对象组合成一个消费者组,然后将该消费者组订阅到同一个 topic 不同 tag。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系列产品 Serverless 化。RocketMQ 中文社区:https://rocketmq-learning.com/