RocketMQ快速入门:group、topic、queue、tag等基本概念(四)

本文详细介绍了RocketMQ中的核心概念,包括消费者和生产者的分组机制、Topic(主题)、Queue(队列)的含义及作用,以及Message(消息)的结构和Tag(标签)。同时概述了这些组件之间的关系和RocketMQ的负载均衡策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 引言

上一节,我们说明了rocketmq中的4个核心组成以及他们之间的工作关系。但其中穿插的topic, queue等概念,如果未接触过mq的同学可能会有些迷糊,所以本节,我们重点针对rocketmq中的基本概念进行讲解,之前学习过其他mq的同学也能够形成对比。

1. 基本概念

Group:分组

rocektmq中有两种分组:消费者分组和生产者分组,每个消费者、生产者都可以属于一个分组。

一个消费者分组中的消费者都会共同消费一个topic消息,在集群模式下,一个topic的消息只能被消费者分组里的一个消费者消费,其消费进度是共享的。广播模式下,因为每个消费者都会收到消息,因此他们之间的消费进度相互独立。

同一生产者分组中的生产者发送的消息会分布到不同的Queue上,从而实现负载均衡。rocketmq 5.x版本开始,生产者是匿名的,无需管理生产者分组(ProducerGroup);对于历史版本服务端3.x和4.x版本,已经使用的生产者分组可以废弃无需再设置,且不会对当前业务产生影响

一个消费者组建议只消费一个TOPIC,否则会导致负载均衡时出现问题

Topic:主题

topic是RocketMQ中的消息类别。一个Topic可以有多个生产者和消费者,是消息的逻辑分类。对于发送消息和消费消息而言,可见的都是topic,而具体的queue则是通过负载均衡自动分配的。

topic可以消息发送前手动创建,也可以开启broker的自动创建topic,在发送消息时自动检测topic是否存在,不存在则自动创建

Queue:队列

queue是Topic的物理分区,也是rocketmq中的最小存储单元,也就是说每个queue都是以独立的物理文件存在。一个Topic可以配置多个Queue,以实现扩展和负载均衡,默认会创建4个队列。

rocketmq中是以topic为单位进行管理,但实际传输的对象是到queue,也就是说无论消息发送还是消费都是到实际的queue中去操作。

Message:消息

消息队列中传递信息的载体,message中包含了如下信息:

  • 主题名称:当前消息所属主题的名称
  • 消息类型:当前消息的类型,rocektmq中支持的消息类型有:Normal 普通消息、FIFO 顺序消息、Delay 延迟消息、Transaction 事务消息
  • 消息队列:存储当前消息的队列
  • 消息位点:当前消息在队列中的位置
  • 消息id:消息的唯一标识,集群内全局唯一,由数字和字母组成的32位字符串
  • 索引Key:消息的索引键,用于快速检索消息
  • 标签:消息的过滤标签,选填项,设置后消费者可以通过标签过滤指定消息
  • 消息体:实际要传输的数据,采用二进制字节传输
  • 定时时间:延迟消息的属性
  • 消息发送时间:消息发送时,生产者客户端的本地当前时间戳
  • 消息保存时间:消息在mq服务端完成落盘时的本地时间戳
  • 消费重试次数:消费失败后,服务端重新投递的次数
  • 自定义属性:生产者自定义的扩展信息

rocketmq中普通和顺序消息大小限制在4MB,事务和延迟消息限制在64KB

– 参考于rocetmq message消息内部属性

Tag:标签

是可以加在消息上的标识,用于过滤消息,相当于是给消息再加一个标识条件,后续消费时可以通过过滤器来过滤指定tag的消息

2. 整体关系图

如下图所示,在整体关系中,broker中包含多个topic,一个topic中包含多个queue,一个队列中有多个消息,队列是承装消息的物理载体,而每个消息中都可以标识对应的tag
在这里插入图片描述

3. 总结

经过前几章的讲解,我们了解了rocketmq的核心概念,下一节我们将结合实际代码来体会rocketmq的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wu@55555

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值