栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

全站最硬核 百万字强肝RocketMq源码 火热更新中~(五)

全站最硬核 百万字强肝RocketMq源码 火热更新中~(五)

文章目录

org.apache.rocketmq.namesrv.NamesrvControllerorg.apache.rocketmq.remoting.RemotingServerorg.apache.rocketmq.remoting.netty.NettyRemotingServer

private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);

可以看到我们其实才读了一行代码,在这里KVConfigManager的头部,声明了log,LoggerName为“RocketmqNamesrv”,这也对应我们当前在读的总包,是在namesrv包下。

到了第二行:

private final NamesrvController namesrvController;

这里声明了一个NamesrvController,然后接下来我们去看下这里面做了哪些事。

org.apache.rocketmq.namesrv.NamesrvController
    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);

    private final NamesrvConfig namesrvConfig;

    private final NettyServerConfig nettyServerConfig;

    private final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(new ThreadFactoryImpl(
        "NSScheduledThread"));
    private final KVConfigManager kvConfigManager;
    private final RouteInfoManager routeInfoManager;

进来之后首先是之前我们已经看过的InternalLogger,与KVConfigManager里声明的一模一样。接着下面是两个Config,内部就是一些常规的配置参数,不过并没有使用注解开发,全部是原生的get set方法。

还声明了一个单线程实例的ExecutorService

进入第一个比较重要的接口:

org.apache.rocketmq.remoting.RemotingServer

RemotingServer是一个接口,我们直接进入它的唯一实现类看看:

org.apache.rocketmq.remoting.netty.NettyRemotingServer
private static final InternalLogger log = InternalLoggerFactory.getLogger(RemotingHelper.ROCKETMQ_REMOTING);

此处的日志工具的LoggerName是RocketmqRemoting了,因为此时其实已经调到了remoting包下,不在namesrv包了。

先不追究RemotingHelper,继续读NettyRemotingServer

private final ServerBootstrap serverBootstrap;
private final EventLoopGroup eventLoopGroupSelector;
private final EventLoopGroup eventLoopGroupBoss;
private final NettyServerConfig nettyServerConfig;

private final ExecutorService publicExecutor;
private final ChannelEventListener channelEventListener;

private final Timer timer = new Timer("ServerHouseKeepingService", true);
private DefaultEventExecutorGroup defaultEventExecutorGroup;

接下来声明的,是RocketMq中为数不多依赖的东西,netty中的ServerBootstrap,EventLoopGroup,EventLoopGroup,ChannelEventListener,DefaultEventExecutorGroup,使用过netty的同学应该对这几个类并不陌生,我们先不去看netty的源码了,一会看他怎么用。

除这几个netty的类以外,还有一个声明为守护进程的Timer,一个来自JUC包下提交异步任务的ExecutorService

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711467.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号