文章中如果有图看不到,可以点这里去 csdn 看看。从那边导过来的,文章太多,没法一篇篇修改好。

RocketMQ 内容详解【六、RocketMQ 全模块源码与线程机制终极全景】

第六章 · RocketMQ 全模块源码与线程机制终极全景

6.1 全景图概览

在这里插入图片描述


6.2 机制解析

6.2.1 Producer 端机制

  • 普通消息:

    • 负载均衡选择 Broker 和队列。
    • 同步 / 异步 / 单向发送模式。
  • 事务消息:

    • HALF 消息发送到 Broker。
    • 本地事务执行。
    • 回查线程池确认提交或回滚。

6.2.2 Broker 端机制

  1. 消息写入机制

    • CommitLog 顺序写入 + MappedFile + 零拷贝。
    • ConsumeQueue 逻辑索引,快速定位消息。
    • IndexFile 支持按 Key 查询。
  2. 消息消费机制

    • PullMessageProcessor 处理拉取请求。
    • ProcessQueue 缓存消息。
    • ConsumeMessageService 线程池消费。
    • 顺序消息通过 ConsumeLock 保证单队列顺序。
  3. 高可用机制

    • SYNC_MASTER / ASYNC_MASTER / DLedger。
    • 独立线程完成复制和一致性保障。
  4. 延迟与死信机制

    • RetryService 扫描延迟队列。
    • 超过最大重试次数进入 DLQ。
  5. 事务机制

    • CheckTransactionService 扫描 HALF 消息,调用回查线程池处理。

6.2.3 Consumer 端机制

  • 消息拉取:

    • PullMessageService 支持长轮询,减少无效轮询。
  • 消息消费:

    • 顺序消费:单线程队列 + 锁。
    • 并发消费:消费线程池处理不同队列。
  • 消费确认:

    • 更新 offset 到 Broker,支持 Push / Pull 模式。

6.3 线程模型总结

模块线程类型功能
Broker NettyBoss / Worker网络 I/O 处理
SendMessageProcessorWorker线程消息发送处理
PullMessageProcessorWorker线程消息拉取处理
CommitLogFlushRealTimeService / GroupCommitService异步/同步刷盘
ConsumeQueue内存缓存消费索引管理
ConsumeMessageService消费线程池应用消费回调
RetryService延迟队列线程消息重试处理
DLedgerThreadDLedger复制线程高可用同步
CheckTransactionService回查线程池事务消息最终一致性
ProcessQueue顺序锁顺序消息保证

6.4 消息流动机制总结

  1. Producer → Broker → CommitLog → ConsumeQueue → Consumer

  2. 事务消息

    • Producer HALF → Broker → 本地事务 → Check线程 → 转可见消息。
  3. 顺序消息

    • 队列选择 → CommitLog顺序写 → ProcessQueue缓存 → 消费锁顺序消费。
  4. 延迟与重试

    • 消费失败消息 → 延迟队列 → ProcessQueue → 消费线程池。
  5. 高可用复制

    • SYNC\_MASTER / ASYNC\_MASTER / DLedger → CommitLog复制与 ack。

✅ 本章总结

  • 完整覆盖 Producer、Broker、Consumer 全模块机制与源码线程模型
  • 融合 事务、顺序、延迟、重试、高可用、DLedger 的多线程协作。
  • 通过 终极全景图 + 文字解析,可以一目了然理解 RocketMQ 的 消息流、线程协作和机制保障
  • 适合高级开发者、架构师进行 性能优化、故障排查、系统设计参考
posted @ 2025-09-18 16:11  NeoLshu  阅读(9)  评论(0)    收藏  举报  来源