【RocketMQ | 源码分析】RocketMQ本地调试环境搭建

前言

环境搭建是源码分析的第一步,俗话说磨刀不误砍柴工,我们必须要先把本地环境搭建好,才方便后续我们分析和debug源码。

环境&源码准备

开发环境
  • JDK

调试RocketMQ的JDK建议使用JDK1.8

  • Maven
源码准备

RocketMQ源码在Github上apache/rocketmq,首先Fork一个属于自己的仓库,然后再从Fork出来的仓库将源码拉下来,代码拉完之后通过idea打开,再等待Maven下载依赖包,idea加载索引,一切准备完成之后,别忘了将分支切换到想要分析源码的分支。

本文使用的RocketMQ版本是release-4.9.4

我们可以通过idea statistic插件看到RocketMQ大概有15万行代码。

image-20230401082659773

RocketMQ包介绍

我们主要分析RocketMQ中最重要的4大组件namesrv,broker,producer,consumer。通过idea打开RocketMQ工程有如下包

image-20230401083837401

我们需要重点关注的包有

  • rocketmq-broker

broker源码存放在rocketmq-broker包中

  • rocketmq-client

producer和consumer的源码存放在rocketmq-client中

  • rocketmq-example

这个包有很多rocketmq使用的例子,包括简单消息发送和接收例子,批量消息,顺序消息,事务消息,定时消息等等,需要重点关注,我们也可以利用example包中的例子帮助我们调试RocketMQ的源码

  • rocketmq-namesrv

namesrv的源码存放在这个包中

  • rocketmq-store

broker中消息存储相关的代码

本地调试环境搭建

本地Debug环境搭建过程如下

  • 通过源码启动Namesrv
  • 搭建Docket搭建rocketmq-dashboard
  • 通过源码启动broker
  • 通过源码启动Producer
  • 通过源码启动Consumer
Namesrv本地调试环境搭建

Namesrv源码在rocketmq-namesrv包下,启动类是src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java,直接通过NamesrvStartup的main方法启动会失败。

image-20230401094902844

终端输出提示我们需要配置一个ROCKETMQ_HOME环境变量,我们将环境变量配置到idea中

image-20230401095216439

再次启动NamesrvStartup后再次报错

image-20230401095431881

说明namesrv启动过程需要logback相关配置文件,我们可以从RocketMQ官网下载一个RocketMQ安装包,解压过后,安装包目录如下

image-20230331010808871

我们可以将conf文件夹复制到rocketmq源码的根目录,再启动namesrv,控制台提示启动成功

image-20230401095624771

Rocketmq-dashboard环境搭建

Rocketmq-dashboard是 RocketMQ 的管控利器,为用户提供客户端和应用程序的各种事件、性能的统计信息,支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。rocketmq-dashboard不是我们本次研究的源码范围,因此我们通过docker来快速搭建rocketmq-dashboard,通过docker搭建步骤如下

  1. 下载镜像
docker pull apacherocketmq/rocketmq-dashboard:latest
  1. 启动docker-dashboard

下面需要将namesrv ip改为自己本机的ip,监听端口也可以根据自己的需要修改

docker run -p 8101:8080 --name rocketmq-console -d \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.0.120:9876" \
-t apacherocketmq/rocketmq-dashboard

通过浏览器打开rocketmq-dashboard没有报错提示,说明dashboard已经连上了namesrv,dashboard搭建成功,点开Cluster没有匹配的Cluster是因为还没有Broker注册到namesrv上。

image-20230401100350114

Broker本地调试环境搭建

Broker源码在rocketmq-broker包下,启动类是src/main/java/org/apache/rocketmq/broker/BrokerStartup.java,如果直接通过idea启动也会失败。

image-20230331005614576

与上面namesrv一样,我们在idea上配置启动环境变量ROCKETMQ_HOME。打开conf文件,可以看到安装包中包含logback相关配置文件,broker.conf是broker的配置文件,打开broker.conf,并修改namesrAddr为本地ip。

image-20230331011317403

再次启动broker,broker成功启动,启动后控制台提示broker成功启动,仔细观察发现控制台中打印的brokerName与配置文件中的brokerName不相同,RocketMQ的Dashboard也没有集群信息,虽然broker成功启动了,但是并没有将信息注册到namesrv上。

image-20230331011525338

image-20230331011655645

在broker启动时可以通过-c参数指定broker的配置路径,添加broker配置路径后,再次重新启动

image-20230331012032977

控制台输出的brokerName与配置文件中的brokerName相同

image-20230331012201333

dashboard上也显示broker成功注册到namesrv上,至此rocketmq本地的调试环境就搭建完成拉,小伙伴可以推送一条消息试试。

image-20230331012226237

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值