RocketMq的group,topic和tag三者的关系

编程入门 行业动态 更新时间:2024-10-07 10:23:04

RocketMq的group,topic和tag三者的<a href=https://www.elefans.com/category/jswz/34/1770737.html style=关系"/>

RocketMq的group,topic和tag三者的关系

在消息队列 RocketMQ 版中,Topic 与 Tag 都是业务上用来归类的标识,区分在于 Topic 是一级分类,而 Tag 可以理解为是二级分类。您可通过本文了解如何搭配使用 Topic 和 Tag 来实现消息过滤。
 

Topic:topic是消息通道的重要标识,可以理解成消息的标题,生产者和消费者必须在用一个topic下才能通讯。

Tag:tag可以理解为topic的二级标签,同一个topic可以发送不用的tag消息,消费者可以指定接收某个tag的消息,也可以使用通配符如“*”,null来接收所有tag的消息,是对消息的进一步分类。

Group: groupname是组的感念,理解起来比较抽象,groupname可以配置也可以不配置,不配置默认都在一个组。但是不影响消息的正常发送和接收,但是会影响到消息的消费者会被谁消费。

举个例子,如果有一个生产者,两个消费者A和B,如果生产者配置的组名为group1,消费者A和B的组名也配置的组名为group1,那么消费者A和B只能有一个消费到消息,但是如果消费者A和消费者B 配置了不通的组名,则两个消费者都能收到生产者发送的消息。其实groupname是为了项目的负载均衡用的,比如你的消费者程序部署多处,为了防止消息重复处理,只需要配置相同的groupname就可以了

Topic 和 Tag 的关系如下图所示。

mq中Topic和Tag的关系
适用场景

您可能会有这样的疑问:到底什么时候该用 Topic,什么时候该用 Tag?

建议您从以下几个方面进行判断:

    消息类型是否一致:如普通消息、事务消息、定时(延时)消息、顺序消息,不同的消息类型使用不同的 Topic,无法通过 Tag 进行区分。
    业务是否相关联:没有直接关联的消息,如淘宝交易消息,京东物流消息使用不同的 Topic 进行区分;而同样是天猫交易消息,电器类订单、女装类订单、化妆品类订单的消息可以用 Tag 进行区分。
    消息优先级是否一致:如同样是物流消息,盒马必须小时内送达,天猫超市 24 小时内送达,淘宝物流则相对会慢一些,不同优先级的消息用不同的 Topic 进行区分。
    消息量级是否相当:有些业务消息虽然量小但是实时性要求高,如果跟某些万亿量级的消息使用同一个 Topic,则有可能会因为过长的等待时间而“饿死”,此时需要将不同量级的消息进行拆分,使用不同的 Topic。

总的来说,针对消息分类,您可以选择创建多个 Topic,或者在同一个 Topic 下创建多个 Tag。但通常情况下,不同的 Topic 之间的消息没有必然的联系,而 Tag 则用来区分同一个 Topic 下相互关联的消息,例如全集和子集的关系、流程先后的关系。
场景示例

以天猫交易平台为例,订单消息和支付消息属于不同业务类型的消息,分别创建 Topic_Order 和 Topic_Pay,其中订单消息根据商品品类以不同的 Tag 再进行细分,列如电器类、男装类、女装类、化妆品类等被各个不同的系统所接收。

通过合理的使用 Topic 和 Tag,可以让业务结构清晰,更可以提高效率。
原文链接:

更多推荐

RocketMq的group,topic和tag三者的关系

本文发布于:2024-02-28 04:39:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768199.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:关系   group   RocketMq   tag   topic

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!