13

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建

 2 years ago
source link: https://blog.51cto.com/u_15380918/5117794
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

大家好,我是悟空呀。

最近在倒腾 RocketMQ 消息队列,小卷了下 RocketMQ 的源码,本篇会带着看下如何配置好调试源码的环境。

一、获取源码

首先就是到 Github 网站上下载源码。

源码地址: https://github.com/apache/rocketmq/releases

我下载的是这个版本:rocketmq-rocketmq-all-4.9.2。

如果遇到 Github 网站的打开速度较慢,可以在公众号后台回复 RocketMQ源码 即可获取百度网盘链接。

二、导入源码

下载好了后,用 IntelliJ IDEA 工具导入就可以了。

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码

下面是对各个文件夹相关功能的解释:

broker:RocketMQ 的 Broker 相关的代码,用来启动 Broker 进程。重点要看的。

client:RocketMQ 的 Producer、Consumer 这些客户端的代码,用来生产消息、消费消息。

common:公共模块。

dev:开发相关的一些信息

distribution:用来部署 RocketMQ 的,比如 bin 目录 ,conf 目录。

example:使用 RocketMQ 的例子。

filter:RocketMQ 的一些过滤器。

logappender:RocketMQ 日志相关的

logging:RocketMQ 日志相关的

namesvr:NameServer 的源码。重点要看的。

openmessaging:开放消息标准,可以先忽略

remoting:RocketMQ 的远程网络通信模块的代码,基于netty实现。重点要看的。

srvutil:里面有很多工具类。

store:消息如何在Broker上进行存储的。重点要看的。

style: 代码检查相关的。

test:测试相关的。

tools:命令行监控工具相关。

我们看源码是不是直接就各种文件都看一遍呢?当然不是,首先得把项目跑起来吧,接下来看下如何让 RocketMQ 的 NameServer 和 Broker 启动起来。NameServer 就是所有 Broker 都需要注册的地方,注册中心。Broker 就是用来收客户端发的消息、存储消息传、递消息给消费端的组件。

三、启动 RocketMQ 的 NameServer

3.1 配置 NameServer 启动参数

因为在本地直接启动源码是起不来的,需要单独配置下启动参数。

3.1.1 Edit Configurations

首先在 IDEA 工具的菜单栏中找到 NameSrvStartup 启动的地方,然后下拉选择 Edit Configurations,可以打开 NameSrvStartup 的配置项。如下图所示:

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_rocketmq_02

3.1.2 环境变量

需要配置一个 ROCKETMQ_HOME 环境变量,它就是一个本地文件夹,专门用来存放一些配置文件,这个文件夹的名字后面还会用到。

打开配置环境变量的界面,如下图所示,点下这个按钮就可以了:

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_悟空聊架构_03

然后我们点下加号,配置 ROCKETMQ_HOME 环境变量,文件夹路径我是配置在这里的,大家可以自己配置,注意不要和 RocketMQ 源码目录里面。

/Users/wukong/00.Study/_workspace/rocketmq/ROCKETMQ_HOME

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码_04

3.1.3 拷贝配置文件

首先在 ROCKMQ_HOME 目录新建几个文件夹:conf、logs、store

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_rocketmq_05

然后我们需要 RoctetMQ 自带的配置文件拷贝到 conf 目录下。

配置文件就是需要从源码目录中 distribution 目录下 拷贝三个文件:broker.conf、logback_namesrv.xml、logback_broker.xml。

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_rocketmq_06

3.1.4 修改 logback 日志配置文件

然后打开logback_namesrv.xml 和 logback_broker.xml 文件,将 ${user.home} 全局替换为之前配置的 ROCKETMQ_HOME 目录。

/Users/wukong/00.Study/_workspace/rocketmq/ROCKETMQ_HOME

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码_07

替换后的配置如下图所示:

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码_08

3.1.5 修改 broker 配置文件

打开 conf 目录下的 broker.xml 文件,拷贝下面的配置的到文件中。

注意:brokerIP1 对应的 IP 地址是自己本机 IP。存储路径对应 ROCKETMQ_HOME 的 store 目录。

# 这是nameserver的地址
namesrvAddr=127.0.0.1:9876
brokerIP1=192.168.10.197
# 这是存储路径,你设置为你的rocketmq运行目录的store子目录
storePathRootDir=<你自己的 ROCKETMQ_HOME 路径>/store
# 这是commitLog的存储路径
storePathCommitLog=<你自己的 ROCKETMQ_HOME 路径>/store/commitlog
# consume queue文件的存储路径
storePathConsumeQueue=<你自己的 ROCKETMQ_HOME 路径>/store/consumequeue
# 消息索引文件的存储路径
storePathIndex=<你自己的 ROCKETMQ_HOME 路径>/store/index
# checkpoint文件的存储路径
storeCheckpoint=<你自己的 ROCKETMQ_HOME 路径>/store/checkpoint
# abort文件的存储路径
abortFile=<你自己的 ROCKETMQ_HOME 路径>/store/abort

3.1.6 启动 NameServer

上面的配置都配置好了,就可以用 IDEA 启动了,注意,直接可以用 debug 模式启动。

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码_09

IDEA 会自动找到 ROCKETMQ_HOME 的环境变量,这个目录就是 RocketMQ 的运行目录,里面有新建的 conf、logs、store 目录。conf 对应配置,logs 对应日志、store 对应数据存储。

然后我们可以在控制台看到启动的日志输出:

Connected to the target VM, address: '127.0.0.1:52115', transport: 'socket'
The Name Server boot success. serializeType=JSON

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码_10

四、启动 RocketMQ 的 Broker

3.1 配置 Broker 的启动参数

和 NameServer 的启动参数相似需要配置环境变量,但是 Broker 多了一个 Program arguments 配置项,用来加载指定的配置文件 broker.conf。配置如下:

-c < 你的ROCKETMQ_HOME 目录>/conf/broker.conf

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_rocketmq_11

4.2 启动 Broker

接着用 debug 模式启动 broker,可以看到控制台输出以下信息:

Connected to the target VM, address: '127.0.0.1:52279', transport: 'socket'
The broker[broker-a, 192.168.10.197:10911] boot success. serializeType=JSON and name server is 127.0.0.1:9876

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码_12

4.3 查看启动日志

另外我们到 logs 目录看下启动的详细日志,打开 broker.log 或者 namesrv.log 文件,如下所示:

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_rocketmq_13

五、测试发送消息

我们直接用源码自带的示例代码来做测试。文件目录如下:

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码_14

打开 Producer.java 文件

修改如下代码中的 IP 地址

producer.setNamesrvAddr("127.0.0.1:9876");

然后在 IDEA 中启动这个类:

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码_15

可以看到控制台打印了输出结果,成功发送了一条消息。注意:消费者的示例代码里面,我改成了只发送了一条消息。

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码_16

接着我们启动消费者代码,看下是否成功消费了。同样需要修改这个配置:

consumer.setNamesrvAddr("127.0.0.1:9876");

然后启动 Consumer,可以看到成功消费了一条消息:

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码_17

注意:消息的显示是用 ASCII 码来表示的,所以不能直接看出来发送的什么。

好了,本地的源码调试环境配置完成。

RocketMQ 也是有客户端界面来查看 RocketMQ 的运行情况的。如下所示:

#yyds干货盘点# 一文带你 RocketMQ 源码调试环境搭建_源码_18

下一篇给大家安排上, RocketMQ 的控制台的安装和详细使用说明。

我是悟空,期待和你一起打怪升级变强!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK