RocketMQ是开源的。
git地址:https://github.com/apache/rocketmq
注意:依赖环境:
JDK1.8+;maven;idea.
从git检出源码后,源码目录结构:
● 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:工具类,监控命令相关实现类 |
将源码导入到idea后,执行下面命令:
clean install -Dmaven.test.skip =true
源码调试:
需求:我们基于源码来实现一个消息发送和消息消费。
我们知道,正常RocketMQ部署顺序:启动NameServer、启动Broker、启动生成、启动消费者、发送消息,消费消息。
在进行源码调试之前,先在源码工程创建conf配置文件夹,配置信息从distribution拷贝brokrer.conf和logback_broker.xml及logback_namesrv.xml这三个文件到conf目录。
设置rocketmq的环境变量。不然会出现以下错误:
为什么要甚至rocketmq的环境变量ROCKETMQ_HOME呢?
因为rocketmq在运行的时候,需要从conf文件夹下获取配置及打印日志。查找这些都是从ROCKETMQ_HOME开始查找的。如果没有配置就会报错。
在idea中配置ROCKETMQ_HOME步骤如下:
在Edit Configuations中配置。点击:
在Environment variables中设置环境变量:
配置完成之后,在启动nameService.
启动nameServer源码:
启动broker
消息消费