RocketMQ 学习笔记-01 调试环境搭建

1,497 阅读3分钟

RocketMQ Github 地址

1.源码下载&编译

# 1.clone 源代码
git clone https://github.com/apache/rocketmq.git
# 2.代码编译下载依赖
mvn clean install -Dmaven.test.skip=true

2.IDEA 调试环境搭建

在IDEA 中分别启动NameServer、Broker、并运行消息发送与消息消费的示例程序。

运行代码前新建任意文件夹(rocketmq_temp)作为ROCKETMQ_HOME  ,并且在rocketmq_temp新建三个目录 conf 、logs、store

2.1 启动NameServer

  1. 从RocketMQ distribution 部署目录,拷贝broker.conf、logback_broker.xml logback_namesrv.xml 三个文件到conf 目录
  2. 修改broker.conf 文件内容如下


    3. 修改日志文件目录

修改 logback_broker.xml、 logback_namesrv.xml 日志文件的目录为我们新建的/rocketmq_temp/logs 下;

   4.配置IDEA 运行NamesrvStartup.java

展开namesrv 模块,右键debug模式运行,运行前需要配置ROCKETMQ_HOME

当控制台输出 以下提示代表启动成功

The Name Server boot success. serializeType=JSON

2.2 启动Broker

  1. 配置IDEA 运行BrokerStartup.java

展开broker 模块,右键debug 模式运行BrokerStartup.java,运行之前需要配置ROCKETMQ_HOME、指定broker.conf 配置文件


当控制台输出 以下提示代表启动成功

The broker[broker-a, 10.10.2.232:10911] boot success. serializeType=JSON and name server is 127.0.0.1:9876

2.3 启动Provider

  1. 展开example 模块,修改quickstart 目录下Producer 程序


   2. 运行Provider 当控制台有以下输出结果代表消息发送成功

SendResult [sendStatus=SEND_OK, msgId=C0A81F091B4218B4AAC272FCE64E0000, offsetMsgId=C0A81F0900002A9F000000000002BEB2, messageQueue=MessageQueue [topic=TopicTest, brokerName=broker-a, queueId=3], queueOffset=250]

2.4 启动Consumer

  1. 展开example 模块,修改quickstart 目录下Consumer 程序


   2. 运行Consumer 当控制台有以下输出结果代表消息消费成功

ConsumeMessageThread_1 Receive New Messages: [MessageExt [queueId=0, storeSize=178, queueOffset=0, sysFlag=0, bornTimestamp=1563801916906, bornHost=/10.10.2.232:53133, storeTimestamp=1563801916952, storeHost=/10.10.2.232:10911, msgId=0A0A02E800002A9F0000000000000000, commitLogOffset=0, bodyCRC=613185359, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=250, CONSUME_START_TIME=1563802089001, UNIQ_KEY=0A0A02E819B118B4AAC270BE41EA0000, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 48], transactionId='null'}]] 

至此,RocketMQ 本地调试环境搭建成功!

3.RocketMQ 源代码目录结构介绍


3.1RocketMQ 核心目录说明

  1. broker:broker 模块(Broker 消息中转角色,负责存储消息,转发消息,其实就是RocketMQ Server;)
  2. client:消息客户端,包含消息生成者、消息消费者相关的类。
  3. common:公工包。
  4. dev:开发者信息。
  5. distribution:部署实例文件夹。
  6. example:RocketMQ 示例代码。
  7. filter:消息过滤相关基础类
  8. filtersrv:消息过滤服务器实现相关类。
  9. logappender:日志相关实现类。
  10. namesrv:NameServer 实现相关类(负责MQ 服务之间的协调,每一个Broker 启动的时候都会向NameServer 注册,主要接受broker 的注册,接收客户端的路由请求并返回路由信息)
  11. openmessaging:消息开放标准
  12. remoting:远程通信模块,基于Netty.
  13. srvutil:服务器工具类。
  14. store:消息存储实现相关类。
  15. tools:工具类,监控命令相关实现类。