Namesrv源码分析 BrokerConfig,用来封装其绝大多数基本配置信息 NettyServerConfig,封装了其作为对外暴露的消息队列服务器的信息 NettyClientConfig,则封装了其作为NameServer客户端的信息 NamesrvStartup: main(): main0(): start(NamesrvController controller=createNamesrvController()): 1:createNamesrvController(): 1:解析命令行参数-c参数加载配置文件 2:日志打印配置 3:注册所有配置信息 NamesrvController.getConfiguration().registerConfig(properties); 2:NamesrvController.initialize()初始化方法: 1:加载kv配置信息(配置文件已kv的方式加载 2:创建nettty服务端 NamesrvController.remotingServer = new NettyRemotingServer(this.nettyServerConfig, this.brokerHousekeepingService); 使用semaphore控制并发数量:单向请求许可数量semaphoreOneway 256,异步请求许可数量semaphoreAsync 64 3:为服务端创建工作线程池 固定线程池,大小根据配置文件中指定 4:注册处理器(不同的模式采用不同的处理器,单机和集群) 5:每隔10s进行路由剔除检查 NamesrvController.routeInfoManager.scanNotActiveBroker() 6:每隔10s进行kv配置打印 NamesrvController.kvConfigManager.printAllPeriodically() 7:tls启用处理(判断ssl证书是否发生改变,发生改变则重载ssl上下文) 3:初始化失败则直接关闭并退出 4:注册优雅关闭 在 JVM 进程关闭之前, 先将线程池关闭, 及时释放资源 5:启动netty服务端 NamesrvController.remotingServer.start(); 6:如果为tls模式则启动文件监听服务 NamesrvController.fileWatchService.start();
RocketMq源码解析-Namesrv
最新推荐文章于 2024-05-27 22:48:24 发布