IDEA中启动RocketMQ的NameServer源码

1.下载源码

git命令下载源码:

git clone git@github.com:apache/rocketmq.git

配置Maven相关环境,使用IDEA打开该源码,并等待加载完成,这一步骤就不详细描述了。

2.配置启动参数

2.1添加NameServer启动类

在打开RocketMQ项目的IDEA中,找到如下图:
在这里插入图片描述

点击,按照如下图操作,加载NameServer的启动类NamesrvStartup:
在这里插入图片描述在这里插入图片描述

然后在该弹出框中选择要运行的模块:
在这里插入图片描述

2.2 配置NameServer启动参数

NameServer启动的时候需要一个ROCKETMQ_HOME的环境变量,这个变量的值就是自己想要设置的RocketMQ运行目录了,不要跟下载的RocketMQ源码目录一样,我设置为D:\dev\rocketmq_workspace。可以在操作系统中配置,IDEA会默认加载进去。也可以在IDEA中直接添加:
在这里插入图片描述

配置好之后,点击Apply和OK按钮即可,NameServer启动的时候将会使用该变量。
其实在上面的界面中,我们可以给一个类配置很多东西,包括他启动时候的JVM虚拟机的参数(VM options),包括我们要传递给他的main()方法的参数(Program options),这都是很实用的。而我们目前要配置的只是Environment Variables。

3.创建运行所需目录和文件

由于NameServer运行时需要一些固定的目录和文件,我们在上面设置的ROCKETMQ_HOME的目录中按照如下操作

3.1创建文件夹
  • 创建所需目录
    创建conf,logs,store三个文件夹,然后我们把RocketMQ源码目录中的 distrbution\bin 目录下的broker.conflogback_namesvr.xml两个配置文件拷贝到刚才新建的conf目录中去。

  • 修改logback_namesvr.xml文件
    打开之后,将其中的${user.home}全部查找替换为你在上面设置的RocketMQ运行目录就可以了(注意需将反斜杠"“改成正斜杠”/")。

  • 修改broker.conf文件
    打开之后,按照如下配置对应修改即可:

# 以下是原始配置,不必改动
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 这是nameserver的启动地址,broker会基于该nameserver进行通信
namesrvAddr=127.0.0.1:9876
# 这是存储路径,你设置为你的rocketmq运行目录的store子目录
storePathRootDir=D:/dev/rocketmq_workspace/store
# 这是commitLog的存储路径
storePathCommitLog=D:/dev/rocketmq_workspace/store/commitlog
# consume queue文件的存储路径
storePathConsumeQueue=D:/dev/rocketmq_workspace/store/consumequeue
# 消息索引文件的存储路径
storePathIndex=D:/dev/rocketmq_workspace/store/index
# checkpoint文件的存储路径
storeCheckpoint=D:/dev/rocketmq_workspace/store/checkpoint
# abort文件的存储路径
abortFile=D:/dev/rocketmq_workspace/store/abort

4.启动NameServer

按照上面的步骤修改完毕之后,就可以启动NameServer了,右击NamesrvStartup类,执行main方法:
在这里插入图片描述

NameServer会自动查找上面配置的ROCKETMQ_HOME变量,读取conf里的配置文件,所有的日志都会打印在logs目录里,然后数据都会写在store目录里,当执行成功之后,控制台将打印:

The Name Server boot success. serializeType=JSON

以后再运行NameServer的时候,直接去这里进行debug即可:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值