Rocketmq源码编译运行
下载
源码目录结构
| 名称 | 作用 |
|---|---|
| broker | broker模块:c和p端消息存储逻辑 |
| client | 客户端api:produce、consumer端 接受与发送api |
| common | 公共组件:常量、基类、数据结构 |
| tools | 运维tools:命令行工具模块 |
| store | 存储模块:消息、索引、commitlog存储 |
| namesrv | 服务管理模块:服务注册topic等信息存储 |
| remoting | 远程通讯模块:netty+fastjson |
| logappender | 日志适配模块 |
| example | Demo列子 |
| filtersrv | 消息过滤器模块 |
| srvutil | 辅助模块 |
| filter | 过滤模块:消息过滤模块 |
| distribution | 部署、运维相关zip包中的代码 |
| openmessaging | 兼容openmessaging分布式消息模块 |
编译
解压导入idea ,修改配置文件pom.xml,jdk编译版本为1.8
# 编译
mvn -Prelease-all -DskipTests clean install -U
启动namesrv
进入org.apache.rocketmq.namesrv.NamesrvStartup,执行main方法
会抛出错误, 原因是没有设置配置ROCKETMQ_HOME文件路径
Please set the ROCKETMQ_HOME variable in your environment to match the lo
cation of the RocketMQ installation

代码位置org.apache.rocketmq.namesrv.NamesrvStartup#createNamesrvController,可以修改源码,增加rocketHome的配置
也可以通过修改启动参数设置rocketHome, 在idea的run configurators中配置 VM参数为
-Drocketmq.home.dir=D:\code\java_yuanma\rocketmq\distribution
同时还需要设置user.home,指定日志文件路径
-Duser.home=D:\code\java_yuanma\rocketmq\user.home
还需要配置namesrv的ip和port

然后运行NamesrvStartup#main启动namesrv
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ncNb2iI-1578200015945)(F:/2019/%E4%B9%A6/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%862/rocketmq/idea%E8%B0%83%E8%AF%95rocketmq%E6%BA%90%E7%A0%81.assets/image-20191113161603998.png)]](https://img-blog.csdnimg.cn/20200105125607549.png)
控制台出现上图结果,启动成功
启动broker
进入org.apache.rocketmq.broker.BrokerStartup,可以执行main方法,同样需要先配置rocketHome
在org.apache.rocketmq.broker.BrokerStartup#createBrokerController中修改源码,增加rocketHome的配置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-keDbDiZZ-1578200015946)(F:/2019/%E4%B9%A6/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%862/rocketmq/idea%E8%B0%83%E8%AF%95rocketmq%E6%BA%90%E7%A0%81.assets/image-20191113161934004.png)]](https://img-blog.csdnimg.cn/2020010512562092.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2phdmFqaWFnb3U=,size_16,color_FFFFFF,t_70)
也可以通过修改启动参数设置rocketHome, 在idea的run configurators中配置 VM参数为
-Drocketmq.home.dir=D:\code\java_yuanma\rocketmq\distribution
同时还需要设置user.home,指定日志文件路径
-Duser.home=D:\code\java_yuanma\rocketmq\user.home
还需要配置程序参数
‐n 127.0.0.0:9876 -c D:\code\java_yuanma\rocketmq\distribution\conf\broker.conf
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4q0fckkH-1578200015946)(F:/2019/%E4%B9%A6/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%862/rocketmq/idea%E8%B0%83%E8%AF%95rocketmq%E6%BA%90%E7%A0%81.assets/image-20191113162243329.png)]](https://img-blog.csdnimg.cn/20200105125628385.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2phdmFqaWFnb3U=,size_16,color_FFFFFF,t_70)
然后运行BrokerStartup#main启动broker
控制台出现上图结果,启动成功
如果出现以下情况,ip不对,是因为多网卡的问题

这时需要修改D:\code\java_yuanma\rocketmq\distribution\conf\broker.conf 此配置文件
增加brokerIP1 = 127.0.0.1
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MOBRa8ul-1578200015948)(F:/2019/%E4%B9%A6/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%862/rocketmq/idea%E8%B0%83%E8%AF%95rocketmq%E6%BA%90%E7%A0%81.assets/image-20191113162710590.png)]](https://img-blog.csdnimg.cn/20200105125727760.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2phdmFqaWFnb3U=,size_16,color_FFFFFF,t_70)
测试
启动Producer发消息,成功
如果出现No Topic Route Info 错误:
broker.conf 中增加配置
autoCreateTopicEnable = true
namesrvAddr = 127.0.0.1:9876
来源:CSDN
作者:SpringBoot_
链接:https://blog.csdn.net/SpringBoot_/article/details/103842058