1.Rocketmq组成
Rocketmq
由四部分组成
producer
消息的生产者Consumer
消息的消费者Broker
消息的储存者NameServer
注册中心
RocketMQ
的启动顺序是先启动NameServer
,再启动Broker
,这个时候消息队列就已经可以提供服务了
2.单机版安装
-
到官网上下载安装包,并解压到本地,我使用的版本是4.3.0
# wget http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.3.0/rocketmq-all-4.3.0-bin-release.zip # unzip rocketmq-all-4.3.0-bin-release.zip # mv rocketmq-all-4.3.0-bin-release.zip /usr/local/rocketmq 复制代码
-
创建日志存储文件夹
# mkdir /usr/local/rocketmq/store # mkdir /usr/local/rocketmq/store/commit # mkdir /usr/local/rocketmq/store/consum # mkdir /usr/local/rocketmq/store/index 复制代码
-
rocket
配置文件修改# vim /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties #可以直接将以下内容覆盖到properties文件中 terName=rocketmq-cluster #broker 名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master, #0 表示 Slave brokerId=0 #nameServer 地址,如果是集群使用,分号分割 #假如我这台机器的地址是192.168.99.171 namesrvAddr=192.168.99.171: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=/usr/local/rocketmq/store #commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 异步复制 Master #- SYNC_MASTER 同步双写 Master #- SLAVE brokerRole=ASYNC_MASTER #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128 复制代码
-
修改启动脚本参数 (默认会占用8G内存)
# vim /usr/local/rocketmq/bin/runbroker.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m - XX:MaxPermSize=320m # vim /usr/local/rocketmq/bin/runserver.sh JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m - XX:MaxPermSize=320m" 复制代码
-
启动
NameServer
# cd /usr/local/rocketmq/bin # nohup sh mqnamesrv & 复制代码
-
启动
BrokerServer
# cd /usr/local/rocketmq/bin # nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties >> # /dev/null 2#&1 & 复制代码
-
查看是否安装成功
# jps 4370 BrokerStartup 4319 NamesrvStartup 4847 Jps 复制代码
-
停止服务
# cd /usr/local/rocketmq/bin # sh mqshutdown broker # sh mqshutdown namesrv 复制代码
3.主从配置
假设目前有
192.169.99.171
和192.169.99.172
两台机器,且已经各自安装好的rocketmq
环境了,在配置前,必须先停掉
rocketmq
服务
1.配置主服务器(假如192.168.99.171
为主节点,192.168.99.172
为从节点)
# cd /usr/local/rocketmq/conf/2m-2s-async
# vim broker-a.properties
#broker 名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master, >0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.99.171:9876;192.168.99.172:9876
#Broker 的角色
#- ASYNC_MASTER 异步复制 Master
#- SYNC_MASTER 同步双写 Master
#- SLAVE
brokerRole=ASYNC_MASTER
复制代码
2.配置从服务器
# cd /usr/local/rocketmq/conf/2m-2s-async
# vim broker-a-s.properties
#broker 名字,这里的名字必须和主服务的保持一致,这样才能确定对应的主节点
brokerName=broker-a
#0 表示 Master, >0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.99.171:9876;192.168.99.172:9876
#Broker 的角色
#- ASYNC_MASTER 异步复制 Master
#- SYNC_MASTER 同步双写 Master
#- SLAVE
brokerRole=SLAVE
复制代码
3.启动主服务器
##启动mqnameserv
# cd /usr/local/rocketmq/bin
# nohup sh mqnamesrv &
##启动broker
# nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties
复制代码
4.启动从服务器
##启动mqnameserv
# cd /usr/local/rocketmq/bin
# nohup sh mqnamesrv &
##启动broker
# nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties
复制代码
rocketmq
的主从复制配置很简单,rocketmq
的conf
文件夹下,根据不同的复制方式,创建了不同的文件,比如
2m-2s-async
双主双从 异步复制
2m-2s-sync
双主双从 同步复制
2m-noslave
双主模式其中每个文件下的
properties
文件又是根据主配置和从配置划分的,比如2m-2s-async
文件夹下
broker-a.properties
表示第一台主节点的配置
broker-a-s.properties
表示第一台从节点的配置
broker-b.properties
表示第二台主节点的配置
broker-b-s.properties
表示第二台从节点的配置这些
properties
文件的指定方式并不是强制的,只是一种约定而已,然后启动broker
传入对应的配置即可
也就是说你想让你某台机器启动是时候是主节点,那么就传入主节点的配置,反之也是一样
# nohup sh mqbroker -c 配置文件路径
复制代码