一、官网地址: http://rocketmq.apache.org/docs/
下载rocketmq rocketmq-all-4.4.0-bin-release.zip
二、安装部署
主机 角色 模式
172.16.1.1 nameserver,broker broker主、broker从
172.16.1.2 nameserver,broker broker主、broker从
生产需要扩容防止单点故障
1.部署配置
RocketMQ的消息是存储到磁盘上的,这样既能保证断电后恢复,又可以让存储的消息量超出内存的限制。
RocketMQ为了提高性能,会尽可能地保证磁盘的顺序写。消息在通过Producer写入RocketMQ的时候,有两种
写磁盘方式
异步刷盘方式:在返回写成功状态时,消息可能只是被写入了内存的PAGECACHE,写操作的返回快,
吞吐量大;当内存里的消息量积累到一定程度时,统一触发写磁盘操作,快速写入
同步刷盘方式:在返回写成功状态时,消息已经被写入磁盘。具体流程是,消息写入内存的PAGECACHE后,立刻
通知刷盘线程刷盘,然后等待刷盘完成,刷盘线程执行完成后唤醒等待的线程,返回消息写成功的状态。
同步复制,异步复制
如果一个broker组有Master和Slave,消息需要从Master复制到Slave上,有同步和异步两种复制方式。
同步复制: Master和Slave均写成功后才反馈给客户端写成功状态
异步复制: 只要Master写成功即可反馈给客户端写成功状态
2.安装步骤
172.16.1.1上broker master操作
mkdir /data/rocketMQ-2m2s/store
mkdir /data/rocketMQ-2m2s/store/{commitlog,consumequeue,index}
unzip rocketmq-all-4.4.0-bin-release.zip
mv rocketmq-all-4.4.0-bin-release /usr/local/rocketmq
vim /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties # 修改参数(登录主机查看参数)
# 集群名字
brokerClusterName=KaishuCluster
brokerName=broker-a (跟从这里一样,跟其他主这里不能一样)
# 0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=172.17.5.42:9876;172.17.5.45:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=300
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口
listenPort=10911
haListenPort=10912
# 删除过期文件时间点,默认凌晨4点
deleteWhen=04
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间,commitlog目录所在分区的最大使用比例,如果commitlog目录所在的分区使用比例大于该值,则触发过期文件删除
diskMaxUsedSpaceRatio=88
#broker存储目录
storePathRootDir=/data/rocketMQ-2m2s/store
#commitLog 存储路径
storePathCommitLog=/data/rocketMQ-2m2s/store/commitlog
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
pullMessageThreadPoolNums=128
#打开锁
useReentrantLockWhenPutMessage=true
waitTimeMillsInSendQueue=3000
vim /usr/local/rocketmq/conf/logback_namesrv.xml 修改nameserver数据保存地址(登录主机查看配置)
172.16.1.2上broker master操作
mkdir /data/rocketMQ-2m2s/store
mkdir /data/rocketMQ-2m2s/store/{commitlog,consumequeue,index}
unzip rocketmq-all-4.4.0-bin-release.zip
mv rocketmq-all-4.4.0-bin-release /usr/local/rocketmq
vim /usr/local/rocketmq/conf/2m-2s-async/broker-b.properties # 修改参数(登录主机查看参数)
vim /usr/local/rocketmq/conf/logback_namesrv.xml 修改nameserver数据保存地址(登录主机查看配置)
172.16.1.1上broker slave操作
mkdir /data/rocketMQ-2m2s/store-s
mkdir /data/rocketMQ-2m2s/store-s/{commitlog,consumequeue,index}
vim /usr/local/rocketmq/conf/2m-2s-async/broker-b-s.properties # 修改参数(登录主机查看参数)
172.16.1.2上broker slave操作
mkdir /data/rocketMQ-2m2s/store-s
mkdir /data/rocketMQ-2m2s/store-s/{commitlog,consumequeue,index}
vim /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties # 修改参数(登录主机查看参数)
3.启动停止服务
启动两台机器的nameserver服务
cd /usr/local/rocketmq/bin
nohup sh mqnamesrv &
两台机器启动broker 主从
172.16.1.1启动主
nohup sh mqbroker -c ../conf/2m-2s-async/broker-a.properties &
172.16.1.2启动主
nohup sh mqbroker -c ../conf/2m-2s-async/broker-b.properties &
172.16.1.1启动从
nohup sh mqbroker -c ../conf/2m-2s-async/broker-b-s.properties &
172.16.1.2启动从
nohup sh mqbroker -c ../conf/2m-2s-async/broker-a-s.properties &
三、rocketmq监控
下载https://github.com/apache/rocketmq-externals
解压unzip rocketmq-externals-master
cd rocketmq-externals-master/rocketmq-console/src/main/resources
vim application.properties
rocketmq.config.nameservAddr=172.16.1.1:9876,172.16.1.2:9876 #修改
rocketmq.config.dataPath=/data/rocketMQ-2m2s # 修改
rocketmq.config.loginRequired=true # 设置登录权限
vim users.properties # 设置登录账号
vim pom.xml # 根据安装版本不同修改版本号
mvn clean package -Dmaven.test.skip=true
启动:nohup java -jar rocketmq-console-ng-1.0.1.jar --server.port=8080 --rocketmq.config.namesrvAddr=172.16.1.1:9876 & # --rocketmq.config.namesrvAddr必须加上该参数,否则会报错
登录http://172.16.1.1:8080
四、命令使用
创建topic
sh mqadmin updateTopic -n 172.17.5.42:9876 -b 172.17.5.42:10911 -c 集群名 -t app01
sh mqadmin topicList -n 172.17.5.42:9876 查看所有topic
sh mqadmin clusterList -n 172.17.5.45:9876 查看集群消息