RocketMQ源码启动Namesrv和Broker
本篇主要讲解内容包括:
- 配置环境信息将RocketMQ源码中的namesrv和broker启动
阅读的源码版本是4.8.0,请自行下载RocketMQ的源码,官方下载地址
RocketMQ源码中具有多个模块,需要在源代码目录下先执行mvn clean package -Dmaven.test.skip
将源码编译(忽略测试包),后续才可以直接启动.
配置Namesrv
配置namesrv主要是配置ROCKETMQ_HOME这个环境变量,在前文***RocketMQ安装***中,首先就是要配置ROCKETMQ_HOME环境变量,它是用来辅助namesrv加载配置文件的.
-
使用idea打开源码根目录
-
根目录下创建conf文件夹
-
将distribution模块下的以下个个文件拷贝到创建好的conf文件夹中,文件名为:
broker.conf logback_broker.xml logback_namesrv.xml logback_tools.xml
-
在idea的启动配置项上,新建一个Application,配置:
- Main class指向
org.apache.rocketmq.namesrv.NamesrvStartup
- Environment variables中配置
ROCKETMQ_HOME
这个环境变量,路径配置为RocketMQ源代码的根目录(namesrv启动会去ROCKETMQ_HOME环境变量的路径下找conf目录下的配置文件) - Use classpath of module选择rocketmq-namesrv模块即可
- Main class指向
配置Broker
配置Broker和上面的namesrv类似,不过需要注意环境变量还需要配置一个NAMESRV_ADDR指向namesrv的启动ip及端口
1.在idea的启动配置上添加一个Application
- Main class指向
org.apache.rocketmq.broker.BrokerStartup
- Program arguments需要配置启动broker指定的配置文件,配置内容为
-c [broker.conf配置文件的绝对路径]
,可以使用拷贝到源码根目录conf文件夹下的broker.conf文件 - Environment variables中配置
ROCKETMQ_HOME
这个环境变量,路径配置为RocketMQ源代码的根目录(和Namesrv中配置一致);配置NAMESRV_ADDR
环境变量,指向启动的namesrv的IP:端口
- Use classpath of module选择rocketmq-broker模块即可
配置TODO
配置todo是为了方便阅读源码时做标记,同时借助idea的todo功能进行关键点查看.我认为这是比较重要的,当我们回顾代码时作用很明显.
实际效果如下:
如何对idea进行这样的配置呢?
- 打开TODO栏,点击编辑过滤器
- 自定义关键字表达式,我定义了
k1 k2 k3
三个关键字;并且添加了一个Filters用来展示有k1 | k2 | k3
标记的信息
启动Namesrv和broker
先启动Namesrv,再启动broker.
- namesrv启动时,控制台输出
The Name Server boot success. serializeType=JSON
,表示启动成功 - broker启动时,控制台输出
The broker[broker-a, 192.168.1.7:10911] boot success. serializeType=JSON and name server is 127.0.0.1:9876
,表示启动成功
测试RocketMQ是否可用:
- 打开example模块,找到
org.apache.rocketmq.example.quickstart.Consumer
类,并给生成的消费者对象关联namesrv,consumer.setNamesrvAddr("127.0.0.1:9876");
,启动消费者 - 打开example模块,找到
org.apache.rocketmq.example.quickstart.Producer
类,并给生成的生产者对象关联namesrv,producer.setNamesrvAddr("127.0.0.1:9876");
,启动生产者 - 观察生产者和消费者控制台输出信息,生产者输出
SendResult ....
表示成功