RocketMQ源码学习笔记:源码启动NameServer,Broker

这是本人学习的总结,主要学习资料如下


1、Overview

这篇文章的源码的版本是release-4.9.8。在启动各个模块之前应该先对项目进行打包mvn install -Dmaven.test.skip=true
在这里插入图片描述

2、NameServer

2.1、源码启动NameServer

NameServer的代码在namesrv模块。相关启动类是namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java

在运行启动类之前需要设置一个ROCKETMQ_HOME的环境变量。运行期间RocketMQ需要的配置文件或者产生的文件都会以ROCKETMQ_HOME指定的路径作为根路径。

在这里插入图片描述
ROCKETMQ_HOME指定的目录下创建三个文件夹confstorelogs

之后从在源代码的distribution模块下复制borker.conflogback_broker.xmllogback_namesrv.xml到刚刚创建的conf文件夹下。

在这里插入图片描述

之后运行启动类,这样就算是启动成功。

在这里插入图片描述

3、Broker启动过程

在刚刚复制的broker.conf更改一些配置。主要是指定存储路径。以下是全部配置。

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH

namesrvAddr=127.0.0.1:9876
autoCreateTopicEnable=true
storePathRootDir=/Users/fulanbin/rocketmq/store
#commitLog存储路径
storePathCommitPath=/Users/fulanbin/rocketmq/store/commitlog
#消息队列存储路径
storePathConsumeQueue=/Users/fulanbin/rocketmq/store/consumequeue
#消息索引存储路径
storePathindex=/Users/fulanbin/rocketmq/store/index
#checkpoint文件存储路径
storeCheckpoint=/Users/fulanbin/rocketmq/store/checkpoint
#abort文件存储路径
abortFile=/Users/fulanbin/rocketmq/store/abort

broker模块中找到broker/src/main/java/org/apache/rocketmq/broker/BrokerStartup.java启动类,配置环境变量和启动参数。

在这里插入图片描述

Broker启动成功。
在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RocketMQ NameServerRocketMQ 的一个核心组件,主要负责管理 RocketMQ 集群中的各个 Broker 节点的信息,包括 Broker 的名称、IP 地址、状态等信息。在 RocketMQ 集群中,所有的 Broker 都需要向 NameServer 注册,以便 NameServer 能够掌握整个集群的状态信息。 RocketMQ NameServer源码位于 `rocketmq-namesrv` 模块中,其主要实现了以下功能: 1. 启动时加载配置文件,包括监听端口、存储路径、集群名称等信息; 2. 处理 Broker 节点的注册、注销请求,维护 Broker 节点的状态信息; 3. 处理 Consumer 节点的心跳请求,维护 Consumer 节点的状态信息; 4. 处理 Topic 的创建、删除请求,维护 Topic 的状态信息; 5. 提供查询 Broker 节点、Topic 等信息的接口。 RocketMQ NameServer 的核心类是 `NamesrvController`,它继承了 Netty 的 `NettyRemotingServer` 类,并实现了 `RequestProcessor` 接口,用于处理来自 Broker 和 Consumer 节点的请求。在 `NamesrvController` 中,还包含了 `RouteInfoManager`、`BrokerHousekeepingService`、`KVConfigManager` 等组件,用于维护集群状态信息和管理配置文件。 RocketMQ NameServer启动入口是 `main` 方法,它会加载配置文件并启动 `NamesrvController`。启动后,NameServer 会监听指定端口,等待来自 Broker 和 Consumer 节点的请求,并根据请求类型调用相应的处理方法进行处理。 总之,RocketMQ NameServer 的主要作用是管理整个 RocketMQ 集群的状态信息,确保集群中各个节点的状态始终保持同步。其源码实现比较复杂,需要深入理解 RocketMQ 的设计思想和架构原理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值