前言
broker是消息接收处理,消息落地的核心模块。这个模块用于接收producer发送的消息以及consumer消费的消息。 本章从broker的启动类入手分析一下broker启动的过程。
分析broker是为了能够搞明白master和slave之间的关系,以及消息落地的具体过程。
createBrokerController
broker启动会获取外部传入的初始化参数, 也会从配置文件中加载相关的配置参数 ,将参数保存在对应的Configuration类当中。
1 | public static BrokerController createBrokerController(String[] args) { |
当配置信息设置完毕后, broker会将这些信息传入brokerController控制器当中,这个控制器会初始化加载很多的管理器:
- rocketmq配置文件信息可以参考如下链接地址
- rocketMQ配置文件信息
- topicManager : 用于管理broker中存储的所有topic的配置
- consumerOffsetManager: 管理Consumer的消费进度
- subscriptionGroupManager: 用来管理订阅组,包括订阅权限等。
当管理器全部加载完毕后,控制器将开始进入下一步初始化,初始化多个线程池,包括sendMessageExecutor、pullMessageExecutor、adminBrokerExecutor、clientManagerExecutor, 分别用于发送消息执行器、拉取消息执行器、broker管理器执行器、客户端管理执行器, 这些执行器回放如线程池中处理, 来做并发执行。
1 | public boolean initialize() throws CloneNotSupportedException { |