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

org.apache.rocketmq.namesrv.kvconfig.KVConfigSerializeWrapper

kvConfig序列化包装器,内部只有一个配置表:

private HashMap<String/* Namespace */, HashMap<String/* Key */, String/* Value */>> configTable;

public HashMap<String, HashMap<String, String>> getConfigTable() {
    return configTable;
}

public void setConfigTable(HashMap<String, HashMap<String, String>> configTable) {
    this.configTable = configTable;
}

可以看到这个KVConfig其实是基于Namesapce的,还记得RocketMq理论学习里的Namesapce,第一次在源码里看到理论中的东西。总之,配置项的分类是基于namespace的。

回到NamesrvController,再往下就是创建一个执行器(线程池),注册处理器,还记得之前说RocketMq底层有个特点,就是执行方法,都要传一个执行器(executor 底层是线程池),一个处理器(processor 就是具体的任务),接下来看下这个注册处理器

registerProcessor();

底层干了什么

private void registerProcessor() {
    if (namesrvConfig.isClusterTest()) {

        this.remotingServer.registerDefaultProcessor(new ClusterTestRequestProcessor(this, namesrvConfig.getProductEnvName()),
            this.remotingExecutor);
    } else {

        this.remotingServer.registerDefaultProcessor(new DefaultRequestProcessor(this), this.remotingExecutor);
    }
}

首先判断是否是集群测试(clusterTest),这个开关是写死为false的,所以我们直接看else的内容

@Override
public void registerDefaultProcessor(NettyRequestProcessor processor, ExecutorService executor) {
    this.defaultRequestProcessor = new Pair<NettyRequestProcessor, ExecutorService>(processor, executor);
}

可以看到就是初始化了remotingServer中的DefaultProcessor这个这个处理器

protected Pair<NettyRequestProcessor, ExecutorService> defaultRequestProcessor;

处理器底层就是这个Pair,之前我们阅读NettyRemotingServer已经看过了。

注册处理器之后,是一系列的定时任务,看下都干了什么:

this.scheduledExecutorService.scheduleAtFixedRate(new Runnable() {

    @Override
    public void run() {
        NamesrvController.this.routeInfoManager.scanNotActiveBroker();
    }
}, 5, 10, TimeUnit.SECONDS);

第一个延时任务,延时执行5s

public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
                                              long initialDelay,
                                              long period,
                                              TimeUnit unit);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值