环境依赖

  • JDK :1.8+
  • Maven
  • IntelliJ IDEA

源码拉取

从官方仓库 https://github.com/apache/rocketmq ​clone​或者​download​源码。

RocketMQ源码分析-环境搭建_maven

源码目录结构:

  • broker: broker 模块(broke 启动进程)
  • client :消息客户端,包含消息生产者、消息消费者相关类
  • common :公共包
  • dev :开发者信息(非源代码)
  • distribution :部署实例文件夹(非源代码)
  • example: RocketMQ 例代码
  • filter :消息过滤相关基础类
  • filtersrv:消息过滤服务器实现相关类(Filter启动进程)
  • logappender:日志实现相关类
  • namesrv:NameServer实现相关类(NameServer启动进程)
  • openmessageing:消息开放标准
  • remoting:远程通信模块,给予Netty
  • srcutil:服务工具类
  • store:消息存储实现相关类
  • style:checkstyle相关实现
  • test:测试相关类
  • tools:工具类,监控命令相关实现类

RocketMQ源码分析-环境搭建_消息存储_02

安装本地

选中项目根目录

RocketMQ源码分析-环境搭建_消息存储_03

clean install -Dmaven.test.skip=true

启动NameServer

RocketMQ源码分析-环境搭建_消息存储_04


这里会失败,直接启动后会出现下图选项

RocketMQ源码分析-环境搭建_工具类_05


配置ROCKETMQ_HOME

RocketMQ源码分析-环境搭建_工具类_06


ROCKETMQ_HOME的值就是当前项目目录

重新启动
控制台打印如下结果代表成功!

The Name Server boot success. serializeType=JSON

启动Broker

在项目根目录新建conf目录复制distribution这个项目中的conf目录中的三个文件

RocketMQ源码分析-环境搭建_工具类_07


创建消息存储目录

RocketMQ源码分析-环境搭建_maven_08

修改broker.conf配置文件

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
# namesrvAddr地址
namesrvAddr=127.0.0.1:9876
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
autoCreateTopicEnable=true

# 存储路径
storePathRootDir=E:\\RocketMQ\\data\\rocketmq\\dataDir
# commitLog路径
storePathCommitLog=E:\\RocketMQ\\data\\rocketmq\\dataDir\\commitlog
# 消息队列存储路径
storePathConsumeQueue=E:\\RocketMQ\\data\\rocketmq\\dataDir\\consumequeue
# 消息索引存储路径
storePathIndex=E:\\RocketMQ\\data\\rocketmq\\dataDir\\index
# checkpoint文件路径
storeCheckpoint=E:\\RocketMQ\\data\\rocketmq\\dataDir\\checkpoint
# abort文件存储路径
abortFile=E:\\RocketMQ\\data\\rocketmq\\dataDir\\abort

启动BrokerStartup,配置​broker.conf​​ROCKETMQ_HOME​

RocketMQ源码分析-环境搭建_工具类_09


启动服务

RocketMQ源码分析-环境搭建_maven_10

发送消息

RocketMQ源码分析-环境搭建_maven_11


RocketMQ源码分析-环境搭建_工具类_12

消费消息

RocketMQ源码分析-环境搭建_maven_13


RocketMQ源码分析-环境搭建_maven_14