rocketMq源码分析之Broker启动

1.前言

此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》,我本人觉得这个作者还是不错,都是从场景来进行分析,感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔记。想看原版的,还是去儒猿课堂。

这篇文章紧挨着上一篇文章rocketMq源码分析之搭建本地环境-优快云博客

2.Broker启动入口

Broker的启动入口为BrokerStartup,下面的代码为BrokerStartup的main方法,从代码上看跟NameServer启动时候很像。创建了一个BrokerController,并将BrokerController进行启动。

    public static void main(String[] args) {
        start(createBrokerController(args));
    }

    public static BrokerController start(BrokerController controller) {
        try {

            controller.start();

            String tip = "The broker[" + controller.getBrokerConfig().getBrokerName() + ", "
                + controller.getBrokerAddr() + "] boot success. serializeType=" + RemotingCommand.getSerializeTypeConfigInThisServer();

            if (null != controller.getBrokerConfig().getNamesrvAddr()) {
                tip += " and name server is " + controller.getBrokerConfig().getNamesrvAddr();
            }

            log.info(tip);
            System.out.printf("%s%n", tip);
            return controller;
        } catch (Throwable e) {
            e.printStackTrace();
            System.exit(-1);
        }

        return null;
    }

2.1 BrokerController初始化的操作

BrokerController进行初始化的时候,跟NamesrvController进行初始化的流程很像,都会进行配置文件参数的解析,但是里面有一些不同的配置

  /**
   * nettyServer的配置类
   */
  final NettyServerConfig nettyServerConfig = new NettyServerConfig();
  /**
   * nettyClient的配置类
   */
  final NettyClientConfig nettyClientConfig = new NettyClientConfig();

  //netty的客户端使用了TLS       
  nettyClientConfig.setUseTLS(Boolean.parseBoolean(System.getProperty(TLS_ENABLE,
                String.valueOf(TlsSystemConfig.tlsMode == TlsMode.ENFORCING))));
  //设置nettyServer监听的端口号
  nettyServerConfig.setListenPort(10911);
  /**
   * 消息存储的配置
   */
   final MessageStoreConfig messageStoreConfig = new MessageStoreConfig();

这块有一个点就是这个Broker在跟NameServer进行通信的时候,它就是NettyClient,当咱们的生产者进行发送消息的时候,那么这个Broker就是NettyServer,用来接收生产者的消息。紧接着下面的代码就是解析配置相关的信息,并向这四个配置文件中进行设置配置相关信息。这里就不粘贴出来进行分析了。 

2.2 BrokerController的构造函数

BrokerController初始化的时候会将刚才创建的BrokerConfig,NettyServerConfig,NettyClientConfig,MessageStoreConfig进行传入到BrokerController中,进行创建。

   //创建BrokerController 对象
final BrokerController controller = new BrokerController(
                brokerConfig,
                nettyServerConfig,
                nettyClientConfig,
                messageStoreConfig);
            // remember all configs to prevent discard
            controller.getConfiguration().registerConfig(properties);
        //进行BrokerController的初始化
            boolean initResult = controller.initialize();
            if (!initResult) {
                controller.shutdown();
                System.exit(-3);
            }

我们紧接着看下BrokerController的构造函数,代码如下:

public BrokerController(
        final BrokerConfig brokerConfig,
        final NettyServerConfig nettyServerConfig,
        final NettyClientConfig nettyClientConfig,
        final MessageStoreConfig messageStoreConfig
    ) {
        this.brokerConfig = brokerConfig;
        this.nettyServerConfig = nettyServerConfig;
        this.nettyClientConfig = nettyClientConfig;
        this.messageStoreConfig = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小园子的小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值