RocketMQ 源码级解读图谱
本文旨在展示 RocketMQ 核心模块的 关键方法调用顺序 + 内存布局 + 多线程刷盘线程
1. CommitLog 内部方法调用链 + 内存布局
1.1 内存布局与文件结构
说明:
1.2 写入与刷盘线程调用链
GroupCommitService:同步刷盘线程FlushRealTimeService:异步刷盘线程- 结合内存映射 + 零拷贝,提高写入吞吐和磁盘利用率
2. ConsumeQueue 内部调用链 + 内存布局
消息索引条目结构
- physicalOffset: 消息在 CommitLog 偏移
- size: 消息长度
- tagsCode: 消息 Tag 哈希值
3. IndexFile 内部调用链
- 支持根据消息 Key 快速查找物理偏移
- Broker 插入消息时同步更新索引
- 消费端可通过
queryMessageByKey() 高效查找
4. Producer 发送流程源码调用链
核心方法:
DefaultMQProducerImpl.sendKernelImpl()MQClientAPIImpl.sendMessage()SendMessageProcessor.processRequest()
5. Consumer 拉取流程 + ack
6. 事务消息(半消息 + 回查)
- Broker 定期扫描 HALF 消息并回查事务状态
- 核心类:
TransactionalMessageService → CheckTransactionStateRequestHeader
7. 重试与死信队列(DLQ)
- 核心类:
RetryMessageService、DefaultMessageStore.putMessage() - 延迟队列与 DLQ 逻辑分开管理,便于监控和补偿
8. Remoting 模块调用链(Netty 核心)
- Remoting 模块封装请求/响应
- 支持同步、异步、单向发送
- 高性能、异步通信基础
✅ 全景总结
这一版源码级图谱,完整覆盖:
- CommitLog / ConsumeQueue / IndexFile 内存布局与方法调用链
- Producer 消息发送流程与 ACK
- Consumer 消费、拉取、ack 流程
- 事务消息半消息机制 + 定时回查
- 顺序消息 Queue 绑定 + 线程绑定
- 重试队列 + 延迟队列 + DLQ
- Remoting 模块 Netty 异步通信