1. NameServer 启动
org.apache.rocketmq.namesrv.NamesrvStartup 的Main函数是启动的入口。
启动分成了两块:
- NameServer启动
- Controller启动(5.0为自动自主切换新增的一个模块,内嵌NameServer的时候会启动)
本篇文章只分析NameServer的启动,Controller的启动在后续的文章中进行分析
1.1 命令行参数解析
NameServer启动之前需要先对命令行参数进行解析,将命令行参数解析为NameServer启动需要的参数配置。主要的命令行参数有两个
命令 | 说明 |
---|---|
-c | 设置配置文件文件位置 |
-p | 打印配置的参数 |
-c命令行参数设置配置文件位置,然后将配置文件中的参数值解析设置为配置类的属性值,涉及到的配置有如下几个:
- NamesrvConfig
- NettyServerConfig
- NettyClientConfig
- ControllerConfig(只有当Controller内嵌NameServer的时候才起作用)
namesrvConfig = new NamesrvConfig();
nettyServerConfig = new NettyServerConfig();
nettyClientConfig = new NettyClientConfig();
nettyServerConfig.setListenPort(9876);
controllerConfig = new ControllerConfig();
if (commandLine.hasOption('c')) {
String file = commandLine.getOptionValue('c');
if (