rocketmq nameserver启动入口

name server功能

name server在角色上类似zookeeper。提供服务注册、维持活跃broker列表、维护broker集群信息、维护topic(包括system_topic)信息等

程序入口

com.alibaba.rocketmq.namesrv.NamesrvStartup.main(String[])

主要的类

com.alibaba.rocketmq.namesrv.NamesrvStartup

com.alibaba.rocketmq.namesrv.NamesrvController

NamesrvStartup main方法执行后,主要是去构建NamesrvController类的实例;

在NamesrvController中主要是两个主要的方法:

com.alibaba.rocketmq.namesrv.NamesrvController.initialize()

initialize方法主要功能是

1、加载了配置文件并初始化

2、构建了 服务端通信层对象(private RemotingServer remotingServer),底层是通过netty的ServerBootstrap实现的

3、注册处理请求的类

DefaultRequestProcessor这个类里实现了nameServer接收请求后的所有大部分处理

以上包含了broker的请求,客户端连接等一系列操作

4、开启扫描不活动的broker,打印功能等的定时任务

com.alibaba.rocketmq.namesrv.NamesrvController.start()

start方法主要功能是

启动了 服务端通信层对象,向ServerBootstrap注册了处理请求的handler;其中NettyConnetManageHandler和NettyServerHandler是处理请求逻辑实现主要的handler。

NettyConnetManageHandler继承自ChannelDuplexHandler,重写了

channelRegistered(ChannelHandlerContext ctx),

channelUnregistered(ChannelHandlerContext ctx),

channelActive(ChannelHandlerContext ctx),

channelInactive(ChannelHandlerContext ctx),

userEventTriggered(ChannelHandlerContext ctx, Object evt),

exceptionCaught(ChannelHandlerContext ctx, Throwable cause)方法,用来监听连接和异常等,其中(channelRegistered,channelUnregistered)是打印一些日志,

其他方法则是向NettyEventExecuter的eventQueue中添加对应的NettyEvent对象,这些对象将会在NettyEventExecuter在后续执行run方法后(是一个Runnable接口实现)不断的从队列中取出并消费(消费实际处理者是ChannelEventListener);

NettyServerHandler继承自SimpleChannelInboundHandler,重写了其

channelRead0(ChannelHandlerContext ctx, RemotingCommand msg)方法,用于读取数据最终是调用DefaultRequestProcessor的processRequest来处理客户端请求

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值