rocketmq broker启动与分析点
broker初始化
createBrokerController()
首先介绍createBrokerController()方法
BrokerStartup.createBrokerController()这里面进行一些启动前参数的设置,其中留意一个从节点的交互,默认为broker端口+1
构造BrokerController
在createBrokerController()最后 增加钩子方法,在关闭jvm的时候,针对controller执行shutdown()方法
针对标红的brokerController的标红进行说明
在构造BrokerController初始化的属性很多,也很重要。
上面的各个Manager,主要是针对topic的配置,消费进度,消费者等信息的管理。
上面的各个队列
对应的是各个发送线程缓存任务的队列,比如缓存请求的队列,总长度默认是10000
以下是针对缓存请求的使用说明
org.apache.rocketmq.broker.BrokerController#initialize()
初始化各种消息处理线程
注册各种命令 的处理类。查看《rocketmq中的编程技巧 多命令,处理怎么通用设计》介绍了如何进行初始化
初始化各种定时任务
初始化高可用的DLeger功能
初始化SSL
初始化事务处理
初始化ACL
初始化钩子类
BrokerController.start()启动
启动各个服务器server
这些server主要有MessageStore 用于保存信息
各个端口的服务server。分别对应不同的端口,可以看到他们的类图如下:
各种后台处理的线程启动
向所有的nameSever注册broker信息
开启定时向nameServer注册broker信息