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

在消息队列 RocketMQ中,我自定义的tag多了的话, 会对broker造成很大的压力吗?

我自定义的tag多了的话, 会对broker造成很大的压力不?tag 数量 大小方面有没有什么需要注意的地方

展开
收起
崔问问 2023-11-20 07:45:55 368 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在 RocketMQ 中,每个主题可以有多个标签(Tag),每个消息只能属于一个标签。标签的存在主要是为了方便消费者订阅特定类型的消息。
    如果你有大量的标签,并且每个标签都有大量的消息,那么确实可能会对 Broker 造成一定的压力。这是因为 Broker 需要在内存中维护每个标签下的消息索引,以便消费者能够快速地获取到他们感兴趣的消息。
    此外,大量的标签也可能会增加 Broker 的存储空间需求,因为每个标签都需要在 Broker 上创建相应的目录和文件。
    因此,在使用标签时,需要根据实际的需求和系统的性能来权衡。一般来说,如果可能的话,建议尽量减少标签的数量,并避免出现大量的空标签或者只包含少量消息的标签。这样可以帮助降低 Broker 的负载,并提高系统的整体性能。

    2023-11-20 14:31:40
    赞同 展开评论 打赏
  • 在消息队列MQ中,自定义的tag数量并不会对broker造成很大的压力。实际上,Topic和Tag都是业务上用来归类的标识,其中Topic是一级分类,可以理解为大的业务类型,而Tag则是二级分类,用于进一步区分某个Topic下的消息。

    例如,如果一个Topic是"电子商务",那么这个Topic下的Tag可能包括"订单"、"支付"、"退款"等。这样,通过组合使用Topic和Tag,用户可以更灵活地过滤和查找消息。

    当您发送消息时,可以将自定义的tag作为消息的属性发送出去。对于消费者来说,他们可以根据自己的需求订阅特定的Topic和Tag,以便接收到感兴趣的消息。这个过程不会给broker带来额外的压力,因为所有的标签都是存储在消息元数据中的,而不是作为消息内容的一部分。

    2023-11-20 10:56:24
    赞同 展开评论 打赏
  • 不会。tag可以理解为一个二级索引,是保存在consumerqueue中的,ef7c747929e9c97fc631bea63a088083.png
    每个tag占用8个字节。此回答整理自钉钉群:群1-Apache RocketMQ 中国开发者钉钉群

    2023-11-20 09:22:26
    赞同 展开评论 打赏

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

相关产品

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

    更多
    企业互联网架构之消息队列 立即下载
    基于消息队列RocketMQ的大型分布式应用上云最佳实践 立即下载
    云原生消息队列Apache RocketMQ 立即下载