版本4.2.0
启动类为NamesrvStartup。启动的时候需要添加环境变量:ROCKETMQ_HOME=/Users/xxx/programFile/rocketmq-all-4
过程:
通过commons-cli-1.2.jar中的相应命令类进行启动Namesrv时传入的参数,通过反射机制赋值给NamesrvConfig类和NettyServerConfig类。并将这2个类中的字段和值打印到日志。然后将这2个类传入NamesrvController类中进行初始化。然后将这2个配置类放入了NamesrvController中的Configuration.configObjectList ArrayList中。
之后调用NamesrvController.initialize()方法和NamesrvController.start()方法。
initialize()方法处理的内容:
KVConfigManager.load()方法:将配置文件kvConfig.json中的内容包装为KVConfigSerializeWrapper。
创建NettyRemotingServer:此为Namesrv的通信模块。后续详勘。
启动remotingExecutor线程池:作用未知???
regitsterProcessor():注册请求处理逻辑,与remotingExecutor构成一对。
启动scheduleAtFixedRate线程池对不活动的broker进行扫描,相应的路由信息管理由RouteInfoManager类进行管理。扫描的频率为启动后的5s开始,每隔10s进行一次。
启动scheduleAtFixedRate线程池对KVConfigManager.configTable中的内容进行打印。频率为启动后的1分钟,每隔10分钟进行一次。
start()方法处理的内容:
启动由Netty组成的发送消息与接收消息模块。后续详勘。