使用IDEA调试RocketMQ

目录

一、IDEA获取RocketMQ源码

二、IDEA调试RocketMQ源码

1、启动NameServer

2、启动Broker

3、使用RocketMQ提供的实例验证消息发送与消息消费

三、RocketMQ核心目录说明

四、参考


一、IDEA获取RocketMQ源码(RocketMQ版本4.6.1)

1、在IDEA 【VCS】菜单中选择【Check from Version Controll】,再选择【Git】:

使用IDEA调试RocketMQ_第1张图片

2、URL输入RocketMQ源码地址,选择保存的本地路径:

使用IDEA调试RocketMQ_第2张图片

3、点击【Clone】:状态栏有代码检出的进度

4、检出完成会弹出提示框,选择【Yes】:

使用IDEA调试RocketMQ_第3张图片

5、在当前窗口打开工程,下载依赖包,依赖包下载完成后:

使用IDEA调试RocketMQ_第4张图片

二、IDEA调试RocketMQ源码

本节将展示IDEA中启动NameServer、Broker,并运行消息发送与消息消费示例程序。

1、启动NameServer

1)展开namesrv模块,打开Run/Debug Configuration:

使用IDEA调试RocketMQ_第5张图片

2)点击Environment Variables后面的按钮,弹出Environment Variables,点击“+”,在Name中输入ROCKETMQ_HOME,Value输入源码保存路径。点击OK,回到Debug Configuration界面,再点击OK。

使用IDEA调试RocketMQ_第6张图片

3)在RocketMQ运行主目录中创建conf、logs、store三个文件夹:

使用IDEA调试RocketMQ_第7张图片

4)从RocketMQ distribution部署目录中将broker.conf、logback_broker.xml文件复制到conf目录中:

使用IDEA调试RocketMQ_第8张图片

5)logback_namesrv.xml文件,只需要修改日志文件目录:(例如下面这种)

注意:logback_broker.xml文件,也需要修改日志目录,否则broker.log会存储在默认目录

6)broker.conf文件内容如下:

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
# nameServer地址,分号分隔
namesrvAddr=127.0.0.1:9876
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 存储路径
storePathRootDir=F:\\rocketmq\\store
# commitLog 存储路径
storePathCommitLog=F:\\rocketmq\\store\\commitlog
# 消费队列存储路径
storePathConsumeQueue=F:\\rocketmq\\store\\consumequeue
# 消息索引存储路径
storePathIndex=F:\\rocketmq\\store\\index
# checkpoint 文件存储路径
storeCheckpoint=F:\\rocketmq\\store\\checkpoint
# abort 文件存储路径
abortFile=F:\\rocketmq\\store\\abort

7)Debug启动:

Connected to the target VM, address: '127.0.0.1:60542', transport: 'socket'
ch.qos.logback.core.joran.spi.JoranException: Could not open [F:\rocketmq\conf\logback_namesrv.xml].
//省略

8)找不到logback_namesrv.xml,把distribution下的logback_namesrv.xml拷贝到F:\rocketmq\conf下:

使用IDEA调试RocketMQ_第9张图片

9)Debug运行NamesrvStartup:

使用IDEA调试RocketMQ_第10张图片

NameServer启动成功!

2、启动Broker

1)打开broker模块,直接运行BrokerStartup:

使用IDEA调试RocketMQ_第11张图片

2)提示要设置ROCKETMQ_HOME,现在配置Debug Configuration:

使用IDEA调试RocketMQ_第12张图片

3)Debug运行BrokerStartup:

使用IDEA调试RocketMQ_第13张图片

4)再去查看一下broker.log文件,看有没有报错:查看了所有log,没有错

注意:参考上面“5)logback_namesrv.xml文件,只需要修改日志文件目录”,去修改logback_broker.xml文件,才能在指定位置找到broker.log文件,不修改的话就是存到它的默认位置了。

使用IDEA调试RocketMQ_第14张图片

3、使用RocketMQ提供的实例验证消息发送与消息消费

1)修改org.apache.rocketmq.example.quickstart.Producer示例程序,设置消息生产者NameServer地址

使用IDEA调试RocketMQ_第15张图片使用IDEA调试RocketMQ_第16张图片

2)运行该示例程序,查看运行结果,如果输出如下则表示消息发送成功:

SendResult [sendStatus=SEND_OK, msgId=C0A80071000018B4AAC26F933ABE0000, offsetMsgId=C0A8DE0100002A9F0000000000000000, messageQueue=MessageQueue [topic=TopicTest, brokerName=broker-a, queueId=3], queueOffset=0]
//省略

3)修改org.apache.rocketmq.examples.quickstart.Consumer示例程序,设置消费者的NameServer地址:

使用IDEA调试RocketMQ_第17张图片

4)运行消费者程序,如果输出如下表示消息消费成功:

Consumer Started.
ConsumeMessageThread_4 Receive New Messages: 
[MessageExt [queueId=3, storeSize=201, queueOffset=0, sysFlag=0,
bornTimestamp=1582358319807, bornHost=/192.168.222.1:53060, storeTimestamp=1582358319834,
storeHost=/192.168.222.1:10911, msgId=C0A8DE0100002A9F0000000000000000, commitLogOffset=0,
bodyCRC=613185359, reconsumeTimes=0, preparedTransactionOffset=0,
toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=250,
CONSUME_START_TIME=1582358829840, UNIQ_KEY=C0A80071000018B4AAC26F933ABE0000,
CLUSTER=DefaultCluster, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 48], transactionId='null'}]]
// 省略 

5)消息发送与消息消费都成功,则说明RocketMQ调试环境已经成功搭建,可以通过Debug调试源码,探知RocketMQ的实现奥秘了。

三、RocketMQ核心目录说明

使用IDEA调试RocketMQ_第18张图片

四、参考

《RocketMQ》技术内幕

你可能感兴趣的:(中间件)