RocketMQ 内容详解【六、RocketMQ 全模块源码与线程机制终极全景】
第六章 · RocketMQ 全模块源码与线程机制终极全景
6.1 全景图概览

6.2 机制解析
6.2.1 Producer 端机制
-
普通消息:
- 负载均衡选择 Broker 和队列。
- 同步 / 异步 / 单向发送模式。
-
事务消息:
- HALF 消息发送到 Broker。
- 本地事务执行。
- 回查线程池确认提交或回滚。
6.2.2 Broker 端机制
-
消息写入机制:
- CommitLog 顺序写入 + MappedFile + 零拷贝。
- ConsumeQueue 逻辑索引,快速定位消息。
- IndexFile 支持按 Key 查询。
-
消息消费机制:
- PullMessageProcessor 处理拉取请求。
- ProcessQueue 缓存消息。
- ConsumeMessageService 线程池消费。
- 顺序消息通过 ConsumeLock 保证单队列顺序。
-
高可用机制:
- SYNC_MASTER / ASYNC_MASTER / DLedger。
- 独立线程完成复制和一致性保障。
-
延迟与死信机制:
- RetryService 扫描延迟队列。
- 超过最大重试次数进入 DLQ。
-
事务机制:
- CheckTransactionService 扫描 HALF 消息,调用回查线程池处理。
6.2.3 Consumer 端机制
-
消息拉取:
- PullMessageService 支持长轮询,减少无效轮询。
-
消息消费:
- 顺序消费:单线程队列 + 锁。
- 并发消费:消费线程池处理不同队列。
-
消费确认:
- 更新 offset 到 Broker,支持 Push / Pull 模式。
6.3 线程模型总结
| 模块 | 线程类型 | 功能 |
|---|---|---|
| Broker Netty | Boss / Worker | 网络 I/O 处理 |
| SendMessageProcessor | Worker线程 | 消息发送处理 |
| PullMessageProcessor | Worker线程 | 消息拉取处理 |
| CommitLog | FlushRealTimeService / GroupCommitService | 异步/同步刷盘 |
| ConsumeQueue | 内存缓存 | 消费索引管理 |
| ConsumeMessageService | 消费线程池 | 应用消费回调 |
| RetryService | 延迟队列线程 | 消息重试处理 |
| DLedgerThread | DLedger复制线程 | 高可用同步 |
| CheckTransactionService | 回查线程池 | 事务消息最终一致性 |
| ProcessQueue | 顺序锁 | 顺序消息保证 |
6.4 消息流动机制总结
-
Producer → Broker → CommitLog → ConsumeQueue → Consumer。
-
事务消息:
- Producer HALF → Broker → 本地事务 → Check线程 → 转可见消息。
-
顺序消息:
- 队列选择 → CommitLog顺序写 → ProcessQueue缓存 → 消费锁顺序消费。
-
延迟与重试:
- 消费失败消息 → 延迟队列 → ProcessQueue → 消费线程池。
-
高可用复制:
SYNC\_MASTER / ASYNC\_MASTER / DLedger→ CommitLog复制与 ack。
✅ 本章总结
- 完整覆盖 Producer、Broker、Consumer 全模块机制与源码线程模型。
- 融合 事务、顺序、延迟、重试、高可用、DLedger 的多线程协作。
- 通过 终极全景图 + 文字解析,可以一目了然理解 RocketMQ 的 消息流、线程协作和机制保障。
- 适合高级开发者、架构师进行 性能优化、故障排查、系统设计参考。
本文来自博客园,作者:NeoLshu,转载请注明原文链接:https://www.cnblogs.com/neolshu/p/19120626

浙公网安备 33010602011771号