RocketMQ 学习笔记03-NameServer 启动流程分析

324 阅读1分钟

NameServer 启动类:NamesrvStartup

1.解析配置文件,填充属性

核心代码

分析

  • 1.解析配置文件把指定的配置文件或启动命令中的选型值填充到namesrvConfig、nettyServerConfig 对象,参数来源有以下两种形式:
    • -c configFile 通过-c 命令指定配置文件路径
    • 使用"-- 属性名 属性值" 例如 --listenPort 9876
  • 2.启动NameServer 时,可以使用./mqnameserver -c configfile -p 打印当前配置信息

NamesrvConfig 重要属性

NettyServerConfig 重要属性

2.创建、初始化NamesrvController实例

  • 加载KV 配置,创建NettyServer 网络处理对象,然后开始两个定时任务,在RocketMQ 中此类定时任务统称为心跳机制。
    • 定时任务1:NameServer 没隔10s 扫描一次Broker,移除处于不激活状态的Broker.
    • 定时任务2:NameServer 每隔10分钟,打印一次KV 配置

3.注册JVM 钩子函数并启动服务器,以便监听Broker、消息生产者的网络请求。

这段代码为我们提供了一种编程技巧,如果代码中使用了线程池,一种优雅停机的方式就是注册一个JVM 钩子函数,在JVM 进程关闭之前,先将线程池关闭,及时释放资源。

总结