跳到主要内容

RocketMQ 教程

Apache RocketMQ 是一款开源的分布式消息中间件,由阿里巴巴开发并捐赠给 Apache 基金会。经过多年双十一大规模场景验证,RocketMQ 已成为业界主流的消息中间件之一。

什么是 RocketMQ?

RocketMQ 是一款分布式消息中间件,用于在分布式系统中进行异步通信。它采用发布-订阅模型,支持普通消息、顺序消息、事务消息、延时消息等多种消息类型。

核心定位

RocketMQ 定位为"消息、事件、流"实时数据处理平台,具备以下核心能力:

  • 消息:传统的消息队列功能,支持异步解耦、流量削峰
  • 事件:事件驱动架构,支持事件溯源、EDA 架构
  • :流式数据处理,支持消息流转、实时计算

为什么选择 RocketMQ?

架构简单

RocketMQ 的架构设计简洁清晰,主要由 NameServer、Broker、Producer、Consumer 四个核心组件构成:

对比其他消息中间件:

特性RocketMQKafkaRabbitMQ
架构复杂度
运维成本
消息可靠性
吞吐量极高
延迟
事务消息支持不支持不支持
延时消息支持不支持支持
顺序消息支持支持不支持

业务功能丰富

RocketMQ 提供了丰富的消息类型,满足各种业务场景:

高可靠性

经过多年双十一流量洪峰验证,RocketMQ 具备极高的可靠性:

  • 消息不丢失:同步刷盘、异步复制机制
  • 高可用:主从架构,自动故障转移
  • 消息轨迹:完整的消息链路追踪
  • 死信队列:异常消息处理机制

云原生支持

RocketMQ 5.0 全面拥抱云原生:

  • 存算分离:Broker 和 Proxy 分离部署
  • 多语言 SDK:Java、C++、Go、Python 等
  • 容器化部署:支持 Kubernetes Operator
  • 云原生 API:gRPC 协议,更好的跨语言支持

适用场景

1. 异步解耦

将非核心业务异步化处理,降低系统耦合度:

优势

  • 降低系统响应时间
  • 提高系统吞吐量
  • 故障隔离,提高系统稳定性

2. 流量削峰填谷

应对突发流量,保护下游系统:

优势

  • 防止系统过载
  • 平滑流量波动
  • 提升用户体验

3. 分布式事务

保证跨服务操作的最终一致性:

优势

  • 保证最终一致性
  • 简化分布式事务实现
  • 降低系统复杂度

4. 日志流处理

实时收集和处理日志数据:

与其他消息队列对比

RocketMQ vs Kafka

对比项RocketMQKafka
设计目标业务消息日志流处理
消息模型发布订阅发布订阅 + 消费者组
消息过滤Tag、SQL92不支持
事务消息支持不支持
延时消息支持不支持
消息回溯支持支持
死信队列支持不支持
运维复杂度

选择建议

  • 业务消息场景优先选择 RocketMQ
  • 大数据日志处理场景优先选择 Kafka

RocketMQ vs RabbitMQ

对比项RocketMQRabbitMQ
吞吐量
延迟
消息模型发布订阅多种模型
分布式原生支持需要集群
事务消息支持不支持
管理界面需要 Dashboard内置 Web 管理
协议支持自定义协议AMQP、MQTT 等

选择建议

  • 高吞吐量场景优先选择 RocketMQ
  • 需要多种消息协议场景选择 RabbitMQ

技术架构概览

核心组件

组件说明
NameServer路由注册中心,类似注册中心
Broker消息存储和转发服务器
Producer消息生产者
Consumer消息消费者

消息流转过程

教程目录

入门基础

消息收发

高级特性

集群与运维

安全与追踪

参考资料

学习建议

  1. 理解核心概念:先掌握 Topic、Queue、Producer、Consumer 等核心概念
  2. 动手实践:本地搭建环境,完成消息收发的 Demo
  3. 深入学习:了解事务消息、顺序消息等高级特性
  4. 生产实践:学习集群部署、监控运维等生产环境知识

版本说明

本教程基于 RocketMQ 5.x 版本编写,同时兼顾 4.x 版本的兼容性说明。RocketMQ 5.x 带来了以下重大改进:

  • 新的 5.0 API,更现代化的客户端接口
  • 存算分离架构,Broker 和 Proxy 可独立部署
  • gRPC 协议支持,更好的多语言支持
  • 消息类型强制校验,更好的运维管理

延伸阅读