开发者学堂课程【RocketMQ 知识精讲与项目实战(第三阶段):源码环境调试】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/704/detail/12459
源码环境调试
调试
1、创建conf配置文件夹
从distribution拷贝broker.conf和1ogback_broker.xm1和1ogback_namesrv.xm1
调试的意思是直接使用下载的源码,去实现消息的发送与消息的消费,再进行源码调试之前,首先需要在源码的根路径期间去创建一个文件夹,叫做 conf ,在这个文件夹里面去配置一些基本的配置文件,配置文件主要有三个,第一个是 broker 的 conf 和 broker 相关的一些配置,以及 broker ,还有namesrv. 日志的配置文件。
拷贝过来,把 conf 的配置文件目录创建出来,然后再去进行调试的时候,基本上是要去做四个事儿。
(1)(2)首先第一步是启动 NameService,再次去启动 broker,然后去使用 rocket mq 的源码给提供的示例工程中发送消息,然后再去使用示例代码去消费消息,基本上会做这四件事。
(3)启动 NameServer
NameServer 启动首先进入到 NameServer 工程中,在里面会看到 NamesrvStartup 进到类中就有提供一个慢方法,是一个入口类。
public class Namesrvstartup{
private static InternalLogger loq;
private static Properties properties=null; private static CommandLine commandLine=null
public static void main(string[] args){
maine(args); H
public static NamesrvController maine(string[] args){
try {
NamesrvController controller=createNamesrvController(args); start(controller);
string tip ="The Name Server boot success. serializeType="+ RemotingCommand.
结果:
D:\develop\Java\jdk1.8.0_161\bin\java
please set the ROCKETMO HOME variable in vour environment to match the location of the RocketMo installation
Process finished with exit code -2
可以直接的去运行慢方法就可以,在运行方法之后发现是没有启动起来,报了一个错,告诉当前需要做一个 rocketmq 环境变量的配置。是因为需要找到当前源码的根路径,找根路径的目的是为了找里边刚才所配的配置文件,比如要输出日志信息,得要用到日志的配置文件。现在就配置一下环境变量,环境变量只是为了工程去用,可以在 idea 中去完成配置。
点击 Edit Configurations,有 Environment variables 可以配置环境变量,名称为 ROCKETMQ_HOME ,值为源码当前的路径,把路径复制过来。
点击 OK ,再启动结果:
D:\develop Java\jdk1.8.0_161 bin\java
The Name Server bost success. serializeType=JSON
(4)启动成功
(5)启动 Broker
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
///配置首先是集群的名字,broker 的名称,broker ID,ID 0 代表的是当前的普通款是主节点,在调试源码的时候没有去搭建集群,是以单键的方式去调试,然后去指定一下 namesrv,注意现在 name srv 是不是在本机就启动去指定一下 namesrv 的端口号,IP地址,然后 deletewhen 意思是 broker 会在凌晨的四点做一些数据的清理工作,然后下边有 broker 的角色,还有刷盘的机制,还有自动创建主题,在测的时候主题如果在 broker 中没有,发送的时候会报错,所以把自动创建主题的配置配一下。
# 存储路径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\rocketmg\dataDirlindex#checkpoint文件
路径storecheckpoint=E:\\RocketMq\\datalrocketmg\dataDirlcheckpoint
# abort文件存储路径
abortFi1e=E:\\RocketMq\\data\\rocketmg\\dataDirllabort
创建数据文件夹 dataDir
启动 BrokerStartup.配置 broker.conf 和 ROCKETMQ_HOME
主要是在配制 broker 数据存储的路径,路径都是在 E:RocketMQ date 根路径下去配,需要在这个地方进到目录,去制定一个目录去创建一个 data 的文件夹,刚好客户的配置是对应上的,然后会去产生 commitlog 路径、消息队列、索引文件还有 checkpoint 检查文件的路径以及临时文件夹的路径都会产生到目录下面,如果不配会升职到默认的路径下面。配置的目的是为了将来查看方便。
拿着配置把 broker 里面默认的配置全部都替换,替换完了之后去启动,进到 broker 项目中有 brokerStartup 里面也有一个main方法。
public class Brokerstartup {
public static Properties properties = null;
public static CommandLine commandLine=null
public static String configFile = null;
public static InternalLogger log;
public static void main(string[] args){
start(createBrokerController(args)):
public static BrokerController start(BrokerController controller) {
try {
controller.start();
结果:
D:\develop\Java\jdk1.8.0_161\bin\java .….
Please set the ROCKETMQ HOME variable in your environment to match the location of the RocketMQ installation Process finished with exit code-2
点击main方法,没有启动成功
配置broker 的根路径,配一下源码路径,然后 Apply ,配完之后就可以去启动。
配完了之后不能启动,broker 启动的时候要去加载配置文件,现在broker startup 不知道这个文件,需要要告诉它通过 _c 参数去配置一下配置文件的一个路径
再次启动结果:
D:develop Javajdk1.8.0_161 bin java ...
The broker[broker-a,192.168.199.181:10911] boot success. serializeType=JSON and name server is 127.0.0.1:9876
启动成功
Rocketmq的服务端已经全部都启动好,可以去测试现在的环境可不可以进到里面,里面有一个example,找一下 example 一个示例工程,示例工程里有一个 quick start 快速入门,里有一个producer 和一个consumer,一个是消息生产者,一个是消息的消费者,消息生产者里有一个main方法,里边发送100条消息,直接用它去发送,消息发送出去了,返回来的是消息是发送的一个结果,
Consumer 可以去启动消费,是成功的去消费者,到这源码的调试工作基本上就完成了。
2、总结
(1)启动 Name Server
最终的效果是实现了消息的发送以及消息的消费,经过了四个步骤,首先第一步是启动name server的时候,首先先去配了配置文件,Copy了三个配置文件,一个是 broker的配置文件,还有一个是broker 的日志配置文件,还有name server的日志文件,
然后再启动name server的时候,配置了环境变量,环境变量是源码的根路径,
可以使用 namestartup 类完成 namesvr 的启动。
(2)启动 broker
broker 的启动首先是配置了里面 broker 的参数信息,然后去创建了一个 date 文件夹,data文件夹里边可以产生一些数据文件的信息,将来 broker 所接收到消息就会存到里边去,进行了一个配置然后再启动 broker 的时候依然是需要配置 ROCKERMQ 的环境变量,在这个上面加载了 broker 配置文件,准备工作进行好之后可以启动,
启动的类叫做 Broker Startup,
里面有个main方法直接启动就可以,当两个启动之后,第三步做了消息的发送,消息发送在 producer 中,在 example 工程中提供的快速入门的生产者还有消,可以去发送一个消息消费看是否可以正常消费,如果可以正常消费说明源码调试工作没有问题。