RocketMQ源码解析

1 NameServer

1.1 NameServer启动流程

1.2 NameServer处理Broker注册信息

2 Broker

2.1 Broker启动与注册信息

2.2 Broker消息的存储结构

2.2.1 CommitLog

默认大小是1G,可以通过MessageStoreConfig中的mappedFileSizeCommitLog属性查看。

CommitLog是消息存储的真正物理文件,文件名按照文件偏移量递增。

一个CommitLog是被多个ConsumerQueue所共享的。

CommitLog采用的是顺序写随机读的方式

2.2.2 ConsumerQueue

consumerqueue是逻辑消息队列,一个topic下有几个队列,则会在对应的目录存储相应的 consumerqueue文件。

consumerqueue不会存储具体的消息,只负责记录所属topic在commitlog中的偏移量,是消息的逻辑队列,类似于数据库的索引文件,存储的是指向物理存储的地址。

2.2.3 IndexFile

IndexFile则提供了一种可以通过key或时间区间来查询消息的方法

2.3 Broker消息处理整体流程

2.3.1 Broker接收消息流程SendMessageProcessor

2.3.2 Broker分发消息流程ReputMessageService

2.3.3 Broker消费消息流程PullMessageProcessor

2.4 过期文件的处理

3 Producer

3.1 Producer发送消息(同步)

4 Consumer

Consumer消费消息支持两种模式:推模式和拉模式

推模式:当producer把消息发送到broker之后,broker将消息推送给consumer,但这种推模式其实也是基于拉模式实现的

拉模式:consumer主动向broker拉消息

两种模式用的最多的是推模式,所以就以推模式为例进行分析

4.1 Consumer启动

4.2 Consumer线程消费消息


RocketMQ源码解析
http://www.zivjie.cn/2023/06/11/消息队列/RocketMQ/源码解析/
作者
Francis
发布于
2023年6月11日
许可协议