下载RocketMQ
Windows
下载地址:https://dlcdn.apache.org/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip
Linux && Mac
Linux或Mac可以用命令下载,一般解压放在/usr/local
目录下
cd /usr/local
wget https://dlcdn.apache.org/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip
unzip rocketmq-all-4.9.3-bin-release.zip
mv rocketmq-4.9.3 rocketmq
cd rocketmq
修改配置
修改conf/broker.conf
文件,主要添加三点
- 添加Name Server地址
- broker地址
- 对外暴露端口
# 添加Name Server地址,默认为127.0.0.1:9876
namesrvAddr=127.0.0.1:9876
# 对外暴露端口
listenPort=10911
# broker地址
brokerIP1=服务器公网地址
下面是详细的配置列表,后续想添加可以参考:
#暴露的外网IP
brokerIP1=阿里云外网ip
#所属集群名字
brokerClusterName=rocketmq
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=阿里云外网ip: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
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/broker/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/broker/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/broker/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/broker/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store/broker/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
运行与测试
启动 Name Server
> nohup sh bin/mqnamesrv &
> tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
启动 Broker
> nohup sh bin/mqbroker -n localhost:9876 -c ./conf/broker.conf
> tail -f ~/logs/rocketmqlogs/broker.log
The broker[%s, 172.30.30.233:10911] boot success...
测试发消息和收消息
> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...
关闭服务
> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK
> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK
使用rocketmq-dashboard
地址:https://github.com/apache/rocketmq-dashboard
下载并配置namesrvAddrs
,运行项目即可看到RocketMQ可视化界面
常见问题
问题一:启动rocketmq服务端出现 failed; error='Cannot allocate memory
解决办法:显示内存不够,可以重启服务器
问题一:org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to xxx.xx.xx.xx:xxx failed
解决办法:确认添加了上面需要的配置