从本章开始我们对Rocketmq的源码进行解析。使用版本是4.9.8。
一、源码目录说明
打开源码,代码结构如下:
acl:
broker:broker模块,broker启动进程
client:消息客户端,包括生产者和消费者
common:公共包
dev:开发者信息。可以看到里面是一个python文件
distribution:部署实例文件夹,里面是一些部署相关的文件,包括配置文件。
docs:帮助文档,包括中英文
example:RocketMQ示例代码
filter:消息过滤有关的类
logging:日志相关
namesrv:NameServer有关的服务
openmessaging:消息开放标准相关的代码
remoting:远程netty调用通信相关的代码
srvutil:服务的工具类
store:和消息存储相关的代码
test: 测试相关类
tools: 工具类,监控命令相关的类
二、源码调试
我们直接使用下载的源码进行消息的发送和消费。
1、创建配置文件,从distribution文件夹下拷贝下图选中的三个文件,在项目根目录下创建一个新的文件夹:conf,把这三个文件拷贝过去
2、启动NameServer
启动namesrv模块下的NamesrvStartup.java,我们看到会提示请配置环境变量,这里配置环境变量的目的就是要读取配置文件。
我们来配置环境变量,key是ROCKETMQ_HOME,value是工程目录
再次启动,启动成功
3、启动broker
首先进行broker的配置:broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
namesrvAddr = 127.0.0.1:9876
# broker凌晨4点做清理工作
deleteWhen = 04
fileReservedTime = 48
# 角色
brokerRole = ASYNC_MASTER
# 刷盘机制
flushDiskType = ASYNC_FLUSH
# 自动创建主题
autoCreateTopicEnable = true
## 存储路径
storePathRootDir = F:\\data\\rocketmq\\datadir
storePathCommitLog = F:\\data\\rocketmq\\commitlog
storePathConsumeQueue = F:\\data\\rocketmq\\consumequeue
storePathIndex = F:\\data\\rocketmq\\index
storeCheckpoint = F:\\data\\rocketmq\\checkpoint
abortFile = F:\\data\\rocketmq\\abort
然后配置环境变量
启动参数中,指定配置文件路径
最后启动broker:BrokerStartup
4、发送消息
我们直接使用example示例工程中的comsumer
运行Producer的main方法
5、消费消息
运行Comsumer的main方法
调试完成
本章结束,下章进行namesrv的源码解析