RocketMQ源码深度解析三之Broker篇

(一)Broker的初始化
在初始化过程中,会调用 BrokerController 对象的 initialize 方法进行初始化工作,大致逻辑如下:
(1)加载 topics.json、 consumerOffset.json、 subscriptionGroup.json 文件,分别将各文件的数据存入 TopicConfigManager、 ConsumerOffsetManager、SubscriptionGroupManager 对象中;
下面给出示例

//加载topics.json
{
        "dataVersion":{
        "counter":2,
        "timestatmp":1393729865073
        },
        "topicConfigTable":{
        //根据 consumer 的 group 生成的重试 topic
        "%RETRY% group_name":{
        "perm":6,
        "readQueueNums":1,
        "topicFilterType":"SINGLE_TAG",
        "topicName":"%RETRY% group_name",
        "writeQueueNums":1
        },
        "TopicTest":{
        "perm":6, // 100 读权限 , 10 写权限 6 是 110 读写权限
        "readQueueNums":8,
        "topicFilterType":"SINGLE_TAG",
        "topicName":"TopicTest",
        "writeQueueNums":8
        }
    }
}
//加载消费进度偏移量consumerOffset.json
{
    "offsetTable":{
        "%RETRY% group_name@ group_name":{
            0:0 //重试队列消费进度为零
    },
    "TopicTest@ group_name":{
        0:23,1:23,2:22,3:22,4:21,5:18,6:18,7:18
        //分组名 group_name 消费 topic 为 TopicTest 的进度为:
        // 队列 queue=0 消费进度 23
        // 队列 queue=2 消费进度为 22 等等…
    }
}
}
//加载消费者订阅关系
{
    "dataVersion":{
        "counter":1,
        "timestatmp":1393641744664
    },
    " group_name":{
            "brokerId":0, //0 代表这台 broker 机器为 master,若要设为 slave 值大于 0
            "consumeBroadcastEnable":true,
            "consumeEnable":true,
            "consumeFromMinEnable":true,
            "groupName":" group_name",
            "retryMaxTimes":5,
            "retryQueueNums":1,
            "whichBrokerWhenConsumeSlowly":1
        }
    }
}

(2)初始化 DefaultMessageStore 对象,该对象是应用层访问存储层的访问类;
(3)调用 DefaultMessageStore.load 加载数据
3.1)调用 ScheduleMessageService.load 方法,初始化延迟级别列表
3.2)调用 CommitLog.load 方法,在此方法中调用 MapedFileQueue.load 法,将 HOME/store/commitlog

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值