概述
Apache RocketMQ 是一款开源的分布式消息中间件,最初由阿里巴巴开发并贡献给 Apache 基金会。它在高吞吐、低延迟、海量堆积、高可用等方面有着良好的表现,广泛应用于电商、金融、互联网等对实时数据处理和分布式系统可靠通信有较高要求的场景。
1. 核心特性
-
高吞吐、低延迟
- RocketMQ 通过高效的存储机制和异步刷盘策略,能够提供百万级的吞吐能力(QPS),同时在正常情况下保持极低的延迟(ms 级别)。
-
水平扩展性
- 通过增加 Broker 实例(存储节点)来水平扩展存储和负载能力,能够轻松支撑海量数据的写入和消费。
-
可靠性和高可用
- 提供主从同步/异步复制机制,保证消息在 Broker 节点发生故障时的容错能力。
- 可根据业务需求选择不同的复制策略,以平衡性能与数据安全。
-
多种消息模式
- 普通消息 (Normal Message):最常见的发布/订阅场景。
- 顺序消息 (Ordered Message):保证消息在同一个分区(queue)内的顺序性。
- 延时消息 (Scheduled/Delayed Message):支持设定延时时间后再进行投递。
- 事务消息 (Transaction Message):与分布式事务结合,在分布式场景下保证消息与业务操作的最终一致性。
-
丰富的特性支持
- 标签 (Tags) 和 过滤 (Filter):在同一个 Topic 下通过标签分组,消费者可以按需订阅指定标签消息,减少消息接收和处理成本。
- 死信队列 (DLQ):对多次消费失败的消息进行隔离存储,防止影响正常消费。
- 重试机制:提供自动重试,对消费失败的消息可重新投递。
-
监控与运维
- 提供 RocketMQ Console 控制台,查看 Topic、Consumer Group、Broker 状态、消息堆积、消费延迟等。
- 支持与 Prometheus 等监控系统结合,构建完善的监控与报警。
2. 核心组件与架构
-
NameServer
- 类似“服务发现中心”,存储 Broker 信息并对外提供路由查询。
- Producer 和 Consumer 都需要从 NameServer 获取 Topic 对应的路由信息,以决定消息发往和拉取的 Broker。
-
Broker
- 负责消息的存储、投递、转发等功能,是 RocketMQ 核心的存储与转发节点。
- 一个 Broker 可以对应多个物理文件存储目录,也可以部署在多台服务器上形成集群。
-
Producer
- 消息发送方,负责将消息投递到 RocketMQ Broker。
- Producer 可以设置重试策略、同步或异步发送模式,以及按需选择顺序消息发送等。
-
Consumer
- 消费消息的一方,支持 Push 和 Pull 两种模式(在官方 Client 中实际是拉模式,但可以对外封装为推模式)。
- 提供集群消费与广播消费两种消费模式,集群消费下同一个消费组内的多个消费者会分摊消费任务;广播消费则是每个 Consumer 都会接收并处理消息。
整体流程:
- Producer 从 NameServer 查询

最低0.47元/天 解锁文章
1361

被折叠的 条评论
为什么被折叠?



