开发者社区 > 云原生 > 云消息队列 > 正文

RocketMQ同一个topic不同tag,订阅关系组中为什么只能对应一个消费者对象?

在使用RocketMQ同一个topic不同tag,订阅关系组(subscriptionTable)中为什么只能对应一个消费者对象?

根据看源码和网上查询得知,Subcription对象中只equals判断topic属性。关于问题的源码解析:阿里云RocketMQ的订阅类Subscription的HashCode及Equals的设计问题

febd2277032807b260968c0ca07597e.jpg

根据图片可以看到,在debug过程中,订阅关系中只有一个对象,但是被我配置了注解(topic相同但tag不同的对象)有8个。

我想请问如何在现有业务条件不变的情况下,将8个对象和8个Subcription注册进table中,并实现8个消费对象监听8个不同tag的业务吗?

展开
收起
游客7x75az7i4vrlw 2023-08-10 10:22:47 238 0
1 条回答
写回答
取消 提交回答
  • RocketMQ 同一个 topic 不同 tag,订阅关系组中只能对应一个消费者对象,是因为 RocketMQ 的订阅关系是基于 tag 来进行划分的。当一个 topic 有多个 tag 时,每个 tag 对应一个订阅关系组。而一个消费者对象只能属于一个订阅关系组,因此同一个 topic 不同 tag,订阅关系组中只能对应一个消费者对象。

    如果需要对同一个 topic 不同 tag 的消息进行消费,可以创建多个订阅关系组,每个订阅关系组使用不同的消费者对象进行消费。也可以使用 Consumer Group 的方式,将多个消费者对象组合成一个消费者组,然后将该消费者组订阅到同一个 topic 不同 tag。

    2023-09-25 16:55:25
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载