目录
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 . . .
Apache: https://rocketmq.apache.org/release_notes/release-notes-4.2.0/
从解压后目录中看, 是没有conf配置文件的, 而rocketMQ的启动是肯定不能缺少配置文件的; conf文件在distribution文件夹中
那么配置的环境变量: ROCKETMQ_HOME = D:\Desktop\source_code\rocketMQ\rocketmq-source-4.2.0\distribution
注意: 项目的home地址是项目的配置文件和脚本命令所在的根目录
3.1 打开idea ==> open ==> 选中 rocketmq-all-4.2.0 ==> OK ==> 等待编译完成
#所属集群名字
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
注意: 上面的文件不要自己创建, 系统加载时如果没有会自动创建的; 自己创建的话, 如果一不小心把文件建成文件夹, 那么启动时会报错的. . .
NameSrv启动入口: org.apache.rocketmq.namesrv.NamesrvStartup
启动参数(broker-a.properties文件位置):
-c D:\Desktop\source_code\rocketMQ\rocketmq-source-4.2.0\distribution\conf\2m-noslave\broker-a.properties
Broker启动入口: org.apache.rocketmq.broker.BrokerStartup
配置NameServer地址(Consumer和Producer都需要配置):
提供两种方案: 1. 设置环境变量 NAMESRV_ADDR = localhost:9876
2. 程序设置 consumer.setNamesrvAddr("localhost:9876"); (Consumer)
producer.setNamesrvAddr("localhost:9876"); (Producer)
启动入口: org.apache.rocketmq.example.quickstart.Consumer
启动入口: org.apache.rocketmq.example.quickstart.Producer
启动成功并发送消息
Comsumer端接收消息
至此, 源码环境搭建完成;
解决: broker-a.properties文件中配置的文件不需要自己创建, 系统加载时发现不存在, 会自动创建; 如果自己创建, 一不小心, 把文件建成文件夹, 多尴尬; 博主跟到源码里面才找到问题, 这不是自己给自己找事. . .
由于在搭建过程中出现不少问题, 在调试过程中不停的写入日志信息; 然后把磁盘撑满了. . . 本来168G剩余内存, 硬生生给耗没了,剩了98m
解决: 很简单, 打开'我的电脑', 看看哪个磁盘剩余内存小于90%, 然后找到store文件, 删掉里面内存大的文件. . . (这个方案仅适用于测试)