当前位置: 首页 > 科技观察

18张图片-本文将带大家搭建RocketMQ源码调试环境

时间:2023-03-12 07:24:49 科技观察

大家好,我是悟空。前言最近在折腾RocketMQ消息队列,把RocketMQ源码做了一个小册子。本文就带大家看看如何配置调试源码的环境。1.获取源码,第一步是到Github网站下载源码。源码地址:https://github.com/apache/rocketmq/releases我下载的是这个版本:rocketmq-rocketmq-all-4.9.2。如果Github网站打开速度慢,可以在公众号后台回复RocketMQ源码获取百度网盘链接。2.导入源码下载后使用IntelliJIDEA工具导入。下面是对各个文件夹相关功能的解释:broker:RocketMQ的Broker相关代码,用于启动Broker进程。重要的是要看。client:RocketMQ的Producer和Consumer客户端的代码,用于消息的生产和消费。common:通用模块。dev:一些与开发有关的信息。distribution:用于部署RocketMQ,如bin目录,conf目录。示例:使用RocketMQ的示例。filter:RocketMQ的一些过滤器。logappender:与RocketMQ日志相关。logging:与RocketMQ日志相关。namesvr:NameServer的源代码。重要的是要看。openmessaging:开放消息标准,可以先忽略。remoting:RocketMQ的远程网络通信模块的代码,基于netty实现。重要的是要看。srvutil:里面有很多工具类。store:消息如何存储在Broker上。重要的是要看。style:与代码检查相关。测试:测试相关。tools:与命令行监控工具相关。我们看源码,是不是只看所有的文件?当然不是,首先我们要运行项目,然后我们看如何启动RocketMQ的NameServer和Broker。NameServer是所有Broker需要注册的地方,注册中心。Broker是一个组件,用于接收来自客户端的消息,存储消息,并将消息传递给消费者。3、启动RocketMQ的NameServer3.1配置NameServer启动参数因为无法在本地启动源码,所以需要单独配置启动参数。3.1.1EditConfigurations首先在IDEA工具的菜单栏找到NameSrvStartup启动的地方,然后下拉选择EditConfigurations,打开NameSrvStartup的配置项。如下图所示:3.1.2环境变量需要??配置一个ROCKETMQ_HOME环境变量,这是一个本地文件夹,专门用来存放一些配置文件,后面会用到这个文件夹的名字。打开配置环境变量的界面,如下图,点击这个按钮:然后我们点击加号,配置ROCKETMQ_HOME环境变量。我这里配置了文件夹路径,大家可以自己配置。注意不要和RocketMQ源代码目录里面混在一起。/Users/wukong/00.Study/_workspace/rocketmq/ROCKETMQ_HOME3.1.3复制配置文件首先在ROCKMQ_HOME目录下创建几个文件夹:conf、logs、store。然后我们需要将RoctetMQ自带的配置文件复制到conf目录下。配置文件是从源码目录下的distribution目录复制三个文件:broker.conf、logback_namesrv.xml、logback_broker.xml。3.1.4修改logback日志配置文件然后打开logback_namesrv.xml和logback_broker.xml文件,将${user.home}全局替换为之前配置的ROCKETMQ_HOME目录。替换/Users/wukong/00.Study/_workspace/rocketmq/ROCKETMQ_HOME后的配置如下图所示:3.1.5修改broker配置文件打开conf目录下的broker.xml文件,复制如下配置到文件。注意:brokerIP1对应的IP地址是自己的本地IP。存放路径对应ROCKETMQ_HOME的存放目录。#这个是nameserver的地址namesrvAddr=127.0.0.1:9876brokerIP1=192.168.10.197#这个是存放路径,你设置成你rocketmq运行目录的store子目录storePathRootDir=<你自己的ROCKETMQ_HOME路径>/store#这个是commitLogstorePathCommitLog=<你自己的ROCKETMQ_HOME路径>/store/commitlog#storePathConsumeQueue=<你自己的ROCKETMQ_HOME路径>/store/consumequeue#storePathIndex=<你自己的ROCKETMQ_HOME路径>/store/index#检查点文件的存放路径storeCheckpoint=<你自己的ROCKETMQ_HOME路径>/store/checkpoint#abort文件存放路径abortFile=<你自己的ROCKETMQ_HOME路径>/store/abort3.1.6启动上面的NameServer所有的配置都配置好后,就可以用IDEA启动了。请注意,您可以直接在调试模式下启动它。IDEA会自动找到ROCKETMQ_HOME环境变量。该目录为RocketMQ运行目录,其中包含新建的conf、logs、store目录。conf对应配置,logs对应日志,store对应数据存储。然后我们可以在控制台看到启动日志输出:ConnectedtothetargetVM,address:'127.0.0.1:52115',transport:'socket'NameServer启动成功。serializeType=JSON四、启动RocketMQ的Broker3。1Broker的启动参数配置与NameServer类似。需要配置环境变量,但是Broker多了一个配置项Programarguments,用于加载指定的配置文件broker.conf。配置如下:-c<你的ROCKETMQ_HOME目录>/conf/broker.conf4.2启动Broker然后在debug模式下启动broker,可以看到控制台输出如下信息:ConnectedtothetargetVM,address:'127.0.0.1:52279',transport:'socket'broker[broker-a,192.168.10.197:10911]开机成功。serializeType=JSONandnameserveris127.0.0.1:98764.3查看启动日志另外我们进入logs目录查看详细的启动日志,打开broker.log或者namesrv.log文件,如下图:5.测试发送消息我们直接使用源码自带的示例代码进行测试。文件目录如下:打开Producer.java文件;修改以下代码中的IP地址;producer.setNamesrvAddr("127.0.0.1:9876");然后在IDEA中启动这个类:可以看到控制台打印了输出结果,成功发送了一条消息。注意:在消费者的示例代码中,我将其更改为只发送一条消息。然后我们启动消费代码,看看是否消费成功。你还需要修改这个配置:consumer.setNamesrvAddr("127.0.0.1:9876");然后启动Consumer,可以看到一条消息被成功消费了:注意:消息的显示是用ASCII码表示的,所以不能直接看到发送了什么。ok,本地源码调试环境配置完成。RocketMQ还有一个客户端界面可以查看RocketMQ的运行情况。如下: