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

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

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

展开
收起
崔问问 2023-11-20 07:45:55 220 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
    赞同 展开评论 打赏

多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖多行业。

相关产品

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

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