本文旨在使用idea从远程仓库中将RocketMQ源码拉取到本地,并配置搭建环境,运行源码中的示例。
依赖环境:
Idea
JDK8
RocketMQ源码(从github或者gitee上拉取代码即可,本文是从gitee上拉取的源码)
面对以上的源码目录,代码还不能运行,因为缺少对应的配置文件目录
因此,需要完成以下操作:
在开始下一步操作之前,我们需要先了解RocketMQ的核心组件,了解它们的在MQ中扮演的角色,以及作用。只有了解了这些,才能在之后的操作中知其所以然。
那么请看下图:
从以上的介绍可以知道,若想要正常运行其他组件,那么NameServer首当其冲,是必须先启动的。因此,找到对应的NamesrvStartup启动类,并尝试启动:
可以看到,启动失败,并提示:Please set ROCKETMQ_HOME variable in your environment to match the location of the RocketMQ installation
这句话的意思是需要在启动类中设置本地RocketMQ启动路径,因此,在idea中打开NamesrvStartup启动类的配置,并加入以下配置:
添加配置完成后,再次启动:
boot success 启动成功
启动Broker也是同样的道理,找到需要设置本地RocketMQ的启动路径(和上一步设置NameServer的步骤一样,在此不赘述),以及它还需要多做一步,启动时指定broker.conf配置文件。
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
# 存储路径
storePathRootDir=D:\\RocketMQSource\\dataDir
# commitLog路径
storePathCommitLog=D:\\RocketMQSource\\dataDir\\commitlog
# 消息队列存储路径
storePathConsumeQueue=D:\\RocketMQSource\\dataDir\\consumequeue
# 消息索引存储路径
storePathIndex=D:\\RocketMQSource\\dataDir\\index
# checkpoint文件路径
storeCheckpoint=D:\\RocketMQSource\\dataDir\\checkpoint
# abort文件存储路径
abortFile=D:\\RocketMQSource\\dataDir\\abort
配置Broker启动类:
最后运行BrokerStartup启动类:
在启动生产者的时候,会有一个很恶心的坑(本人也是被坑了一晚)
首先找到MQClientAPIImpl类(它是用于MQ客户端发送请求的类,例如发送消息),再找到以下代码行,并将null改为"127.0.0.1:9876"(如果不修改,那么在启动消息生产者发送消息的时候,它会一直报错connect null failed,真tm坑)
那么接下来就找到quickstart包下的Producer消息生产者启动类,进行启动:
消息成功发送