RocketMQ

二、RocketMQ-Broker启动流程

2019-04-23  本文已影响61人  ASD_92f7

一、简述

本文简述一下Broker的启动流程,主要涉及的步骤及简要配置,不做过多深入。

二、BrokerStartup、BrokerController

启动类,类结构如下:

BrokerStartup.java
首先会调用createBrokerController()实例化一个BrokerController(它才是核心的启动类),然后调用start()方法,这个套路和Namesrv的思路一致。

1、createBrokerController()

与Namesrv类似,通过一顿骚操作,将cmd命令行的参数进行解析,并产出4个配置(这四个配置本身有默认配置):

与Namesrv类似,如果cmd中含有:

待上面的配置都加载完毕后,调用initialize进行初始化:

boolean initResult = controller.initialize();

2、controller.initialize()

这个方法很重要,做了一堆的事情,在罗列功能之前,先看这个图

log地址
RocketMQ默认会在/home(我的是windows,所以home=C:\User\asd)下新建一个store文件夹,里面存放了一堆一堆很重要的配置,commitlog(固化的消息),configtopicsubscriptionGroupconsumerFilterconsumerOffsetdelayOffset配置),consumequeue(消费者队列配置)等等,都很重要,而controller.initialize()方法主要就是在broker启动的时候对这些配置进行初始化

该加载的都加载完了,然后启动NettyServer以及一堆的 Executor 线程池

线程池初始化呢完毕后,开启一些定时任务

如果启用了TLS安全传输配置,则会启动 fileWatchService?后续补充

最后调用了三个方法:

到这里,controller.initialize()算是完成了,回顾一下,其实思路很清晰:

3、start()

启动就比较直接了,首先启动一些服务:

上一篇 下一篇

猜你喜欢

热点阅读