RocketMQ源码部署

目录

1. 下载, 解压

2. 配置环境变量

3. 导入IDEA

4. 修改配置文件broker-a.properties

5. 启动

5.1 启动NameSrv

5.2 启动Broker

6. 启动测试示例

6.1 启动Consumer示例

6.2 启动Producer示例

7. 问题总结

问题一: Broker启动失败, 提示Process finish with exit code -3

问题二: io.netty包引入失败

问题三: service not available, maybe disk full, CL . . .


1. 下载, 解压

Apache: https://rocketmq.apache.org/release_notes/release-notes-4.2.0/

RocketMQ源码部署_第1张图片

2. 配置环境变量

RocketMQ源码部署_第2张图片

从解压后目录中看, 是没有conf配置文件的, 而rocketMQ的启动是肯定不能缺少配置文件的; conf文件在distribution文件夹中 

RocketMQ源码部署_第3张图片

RocketMQ源码部署_第4张图片

那么配置的环境变量: ROCKETMQ_HOME = D:\Desktop\source_code\rocketMQ\rocketmq-source-4.2.0\distribution

注意: 项目的home地址是项目的配置文件和脚本命令所在的根目录

RocketMQ源码部署_第5张图片

 

3. 导入IDEA

3.1 打开idea  ==>  open  ==> 选中 rocketmq-all-4.2.0 ==> OK ==> 等待编译完成

 RocketMQ源码部署_第6张图片

 

4. 修改配置文件broker-a.properties

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样;
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=localhost:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\Desktop\\source_code\\rocketMQ\\store
#commitLog 存储路径
storePathCommitLog=D:\\Desktop\\source_code\\rocketMQ\\store\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\Desktop\\source_code\\rocketMQ\\store\consumequeue
#消息索引存储路径
storePathIndex=D:\\Desktop\\source_code\\rocketMQ\\store\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\Desktop\\source_code\\rocketMQ\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\Desktop\\source_code\\rocketMQ\\store\\abort
#限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
checkTransactionMessageEnable=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

注意: 上面的文件不要自己创建, 系统加载时如果没有会自动创建的; 自己创建的话, 如果一不小心把文件建成文件夹, 那么启动时会报错的. . .

5. 启动

5.1 启动NameSrv

NameSrv启动入口: org.apache.rocketmq.namesrv.NamesrvStartup

RocketMQ源码部署_第7张图片

5.2 启动Broker

启动参数(broker-a.properties文件位置): 

-c D:\Desktop\source_code\rocketMQ\rocketmq-source-4.2.0\distribution\conf\2m-noslave\broker-a.properties

RocketMQ源码部署_第8张图片

Broker启动入口: org.apache.rocketmq.broker.BrokerStartup

RocketMQ源码部署_第9张图片

6. 启动测试示例

配置NameServer地址(Consumer和Producer都需要配置):

提供两种方案: 1. 设置环境变量 NAMESRV_ADDR = localhost:9876

                        2. 程序设置  consumer.setNamesrvAddr("localhost:9876");  (Consumer)

                                             producer.setNamesrvAddr("localhost:9876");   (Producer)

RocketMQ源码部署_第10张图片

6.1 启动Consumer示例

启动入口: org.apache.rocketmq.example.quickstart.Consumer

RocketMQ源码部署_第11张图片

6.2 启动Producer示例

启动入口: org.apache.rocketmq.example.quickstart.Producer

启动成功并发送消息

RocketMQ源码部署_第12张图片

Comsumer端接收消息

RocketMQ源码部署_第13张图片

 至此, 源码环境搭建完成;

7. 问题总结

问题一: Broker启动失败, 提示Process finish with exit code -3

RocketMQ源码部署_第14张图片

解决: broker-a.properties文件中配置的文件不需要自己创建, 系统加载时发现不存在, 会自动创建; 如果自己创建, 一不小心, 把文件建成文件夹, 多尴尬; 博主跟到源码里面才找到问题, 这不是自己给自己找事. . .

RocketMQ源码部署_第15张图片

问题二: io.netty包引入失败

RocketMQ源码部署_第16张图片

问题三: service not available, maybe disk full, CL . . .

RocketMQ源码部署_第17张图片

由于在搭建过程中出现不少问题, 在调试过程中不停的写入日志信息;  然后把磁盘撑满了. . . 本来168G剩余内存, 硬生生给耗没了,剩了98m 

解决: 很简单, 打开'我的电脑', 看看哪个磁盘剩余内存小于90%, 然后找到store文件, 删掉里面内存大的文件. . . (这个方案仅适用于测试)

你可能感兴趣的:(分布式架构)