1. 基础入门:认识RocketMQ | Apache RocketMQ 5.3 从入门到实战
·

基础入门:认识RocketMQ | Apache RocketMQ 5.3 从入门到实战
前言
1. RocketMQ 定位与应用场景
RocketMQ 5.3 是 Apache 顶级分布式消息中间件,主打低延迟、高可靠、高吞吐,定位为“云原生时代的消息引擎”,核心解决分布式系统中异步通信、流量削峰、数据同步、分布式事务四大核心问题。
-
典型应用场景:
- 电商:大促订单削峰、下单后异步发券/通知
- 金融:交易流水异步写入、跨系统事务一致性
- 物联网:设备上报数据的高吞吐接收与分发
2. 学习本教程的前置知识
| 前置知识 | 掌握程度 | 核心要求 |
|---|---|---|
| Java 基础 | 基础-进阶 | 熟悉面向对象、集合、多线程、Maven 依赖管理 |
| 分布式基础 | 入门 | 理解“集群/节点”“负载均衡”“高可用”基本概念 |
| Linux 基础 | 入门 | 会执行基本命令(cd/ls/ps/nohup)、配置环境变量 |
第一部分 基础入门:认识RocketMQ
第1章 RocketMQ 简介与核心优势
1.1 什么是RocketMQ(官方定义+通俗解释)
- 官方定义:RocketMQ 是一款基于分布式架构的消息中间件,提供低延迟、高可靠的消息发布与订阅服务,支持多种消息类型和部署模式。
- 通俗解释:把 RocketMQ 看作“分布式系统的快递站”——业务系统(寄件人)把消息(包裹)交给 RocketMQ,RocketMQ 负责暂存并投递到目标系统(收件人),全程保证包裹不丢、不重、及时送达。
1.2 RocketMQ 发展历程与应用领域
| 阶段 | 核心节点 | 关键特性 |
|---|---|---|
| 2012 | 阿里内部诞生 | 解决双十一订单削峰问题 |
| 2016 | 开源并捐赠Apache | 成为顶级项目,适配开源生态 |
| 2022 | 5.0 版本发布 | 云原生、多协议支持、轻量化 |
| 2023 | 5.3 版本发布 | 优化事务消息、提升集群稳定性 |
-
核心应用领域:
- 互联网:电商、直播、社交的异步通知/流量削峰
- 金融:交易对账、风控数据同步
- 物联网:设备日志/数据的高吞吐接收
- 政企:跨系统数据交互、流程异步化
1.3 RocketMQ 核心优势(对比Kafka/ActiveMQ)
| 特性 | RocketMQ 5.3 | Kafka | ActiveMQ |
|---|---|---|---|
| 消息延迟 | 毫秒级 | 毫秒级 | 秒级 |
| 支持消息类型 | 普通/顺序/事务/延时 | 普通/延时 | 多类型但性能弱 |
| 单机吞吐量 | 百万级 TPS | 百万级 TPS | 万级 TPS |
| 分布式事务支持 | 原生支持 | 需二次开发 | 弱支持 |
| 云原生适配 | 完善(Docker/K8s) | 较好 | 较差 |
| 运维成本 | 低 | 中 | 高 |
本章小结
- 核心考点:RocketMQ 5.3 的定位、核心优势(尤其是事务消息/云原生适配);
- 关键结论:RocketMQ 兼顾性能与功能,是分布式系统异步通信的首选之一;
- 学习提示:所有特性以 5.3 版本官方文档为准,避免混淆旧版本差异。
第2章 RocketMQ 核心基本概念

2.1 消息核心载体(Topic/MessageQueue/Message)
官方概念图 :
Topic 是“消息分类文件夹”,每个 Topic 包含多个 MessageQueue(物理文件),Message 是文件夹里的“单张纸条”。

| 概念 | 英文 | 核心定义 | 通俗举例 |
|---|---|---|---|
| 主题 | Topic | 消息的逻辑分类标识,生产者发消息、消费者订阅消息的核心依据 | 电商场景:“order_topic”(订单消息) |
| 消息队列 | MessageQueue | Topic 的物理分区,是消息存储/投递的最小单元,一个 Topic 可包含多个 Queue | order_topic 下的 queue-0/queue-1 |
| 消息 | Message | 生产/消费的最小数据单元,包含业务数据(Body)和扩展属性(Tag/Key 等) | 一条订单消息:{“orderId”:“123”,“amount”:99} |
2.2 消息属性(Tag/Key/Offset/MessageView)
| 属性名称 | 英文 | 核心作用 | 使用场景 |
|---|---|---|---|
| 消息标签 | Tag | Topic 下的细粒度分类,用于消费者精准过滤消息 | order_topic 下的“create”(创建订单)/“pay”(支付订单) |
| 消息索引 | Key | 消息唯一标识,用于快速查询/追溯消息 | 用订单号作为 Key,查询该订单的消息投递状态 |
| 消息位点 | Offset | 消息在 Queue 中的唯一坐标(Long 型),标识消息位置 | 消费位点:记录消费者已消费到的 Offset |
| 消息视图 | MessageView | 消息的只读接口,仅能读取属性/Body,不可修改 | 消费端获取消息后,通过 MessageView 读取内容 |
2.3 生产消费角色(Producer/Consumer/ConsumerGroup)

| 角色名称 | 英文 | 核心定义 | 关键特性 |
|---|---|---|---|
| 生产者 | Producer | 构建并发送消息到 RocketMQ 的运行实体 | 支持同步/异步/单向发送 |
| 消费者 | Consumer | 订阅并处理消息的运行实体 | 支持 Push/Pull 两种消费方式 |
| 消费组 | ConsumerGroup | 一组消费逻辑相同的 Consumer 集合,共同消费 Topic 消息,实现负载均衡 | 一个消费组对应一套消费逻辑,避免重复消费 |
2.4 高级消息相关概念
- 事务检查器(TransactionChecker)
生产者侧的监听器,用于 RocketMQ 回查本地事务状态(比如下单后,检查库存是否扣减成功)。 - 事务状态(TransactionResolution)
事务消息的核心状态,包含“提交/回滚/未决”三种:提交则投递消息,回滚则删除消息,未决则触发回查。 - 消费结果(ConsumeResult)
消费者处理消息后返回的状态,仅“成功/失败”两种:失败则 RocketMQ 会重试投递。
2.5 核心运行概念
- 订阅关系
消费者与 Topic 的绑定规则(比如订阅 order_topic 的 Tag=create),服务端基于订阅关系过滤并投递消息。
实例:消费者订阅“order_topic:create”,仅接收订单创建的消息。 - 消息过滤
按 Tag/SQL92 规则筛选消息,5.3 版本默认在服务端完成过滤,减少消费端无效数据传输。
实例:用 SQL92 过滤“amount > 100”的订单消息。 - 消息轨迹
消息从生产到消费的全链路日志(生产节点/投递节点/消费节点),5.3 版本可通过控制台一键开启。
实例:排查“消息发送成功但消费不到”问题时,查看消息轨迹定位卡点。 - 消息堆积
生产者发送速度 > 消费者处理速度,导致 Queue 中消息积压。
实例:大促时订单消息每秒 10 万条,消费端仅能处理 5 万条,就会产生堆积。
本章小结
- 核心考点:Topic 与 MessageQueue 的关系、消费组的作用、消息过滤的方式;
- 关键结论:RocketMQ 所有操作围绕“Topic”展开,Queue 是性能扩展的核心;
- 学习提示:5.3 版本对“消息类型校验”做了强化,一个 Topic 仅允许发送一种类型消息(默认开启)。
更多推荐




所有评论(0)