Coin163

首页 > 《RocketMq》六、Broker中心节点

《RocketMq》六、Broker中心节点

相关标签: rocketmq

2020腾讯云双十一活动,全年最低!!!(领取3500元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1073

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
入口地址https://www.aliyun.com/minisite/goods

由于之前已经把存储,网络分解出来进行了详细的分析,因此Broker部分变得较简单,这里主要分为以下几个部分来说:

一、Broker与NameSrv交互

Broker会不断发送register信息给NameSrv,将自身的clusterName,brokerName,topic信息发送到Namesrv;而Consumer和Producer则会通过Namesrv获取信息,这里最主要的数据结构是:

TopicConfig {
    public static int DefaultReadQueueNums = 16;
    public static int DefaultWriteQueueNums = 16;

    private static final String SEPARATOR = " ";

    private String topicName;
    private int readQueueNums = DefaultReadQueueNums;
    private int writeQueueNums = DefaultWriteQueueNums;
    private int perm = PermName.PERM_READ | PermName.PERM_WRITE;
    private TopicFilterType topicFilterType = TopicFilterType.SINGLE_TAG;
    private int topicSysFlag = 0;
    private boolean order = false;
}


二、Broker与Producer

Producer首先会从NameSrv获取所有的broker-topic-queue列表,然后向各个queue发送message,这里发送后的操作主要是在MessageStore中进行处理;

首先,将数据写入CommitLog;

其次,将信息写入DispatchMessageService,他将创建索引将信息写入ConsumerQueue和IndexService

最后,Producer会发送心跳信息,Broker会使用ProducerManager对Producer进行管理


三、Broker与Consumer

3.1 Consumer首先也会从NameSrv获取所有的broker-topic-queue列表;

3.2 Consumer获取各个broker上面的相同group-topic-broker的消费者信息

3.3其次,根据rebalance的规则,每个consumer消化broker的不同queue;

3.4再次,调用pullMessage获取消息进行消费

3.5最后,Consumer会发送心跳信息,Broker会使用ConsumerManager对Consumer进行管理


四、Schedule定时任务

Broker启动后,MQ会进行一系列的schedule服务,主要schedule如下:

1. messageStore:它的主要工作详见http://blog.csdn.net/xxxxxx91116/article/details/50333161

 2. remotingServer:启动监听服务,在8888进行监听3. brokerOuterAPI:发送的函数API4. pullRequestHoldService: 
 5. clientHousekeepingService:管理consumer、producer的信息 

原文

由于之前已经把存储,网络分解出来进行了详细的分析,因此Broker部分变得较简单,这里主要分为以下几个部分来说: 一、Broker与NameSrv交互 Broker会不断发送register信息给NameSrv,将自身的cl

------分隔线----------------------------
  • 上一篇:
  • 下一篇:
相关推荐
相关最新文章