rocketMq学习第二节:
写到这里的时候,其实我对rocketmq的原理还是不了解的。慢慢学吧,至于其他的都交给时间吧。
- 单机器的rocketmq生产和消费demo搭建,请参照我的上一篇博客。
单机器的rocketmq的生成和消费模式搭建
搭建集群前需要准备(设备防火墙以及需要对外开放的端口,这边需要自行注意。坑在这里,不然服务搭建好,可能会出现问题。)
- 两台linux环境的虚拟机器
- rockemq安装包
- java jdk环境
- 建议每台虚拟机的内存大小设置合理,不能设置的太小。
集群所需的环境的搭建,我就不做讲解呢。不清楚的可以自行百度。
在搭建集群前我们需要对rocketMq的配置文件做一些了解。
- 进入rocketMq的配置文件目录,红色框框里面,就是官方为我们准备搭建集群的模板。
/usr/local/app/rocketmq-4.7.1/conf
2m-2s-async:2个主节点,2个从节点,采用异步刷盘的机制。
2m-2s-sync:2个主节点,2个从节点,采用同步刷盘的机制。
2m-noslave:2个主节点,没有从节点。
我采用的2m-2s-async的方式来搭建集群。模板里面有四个配置文件。
-
broker-a.properties:broker-a的主节点配置文件
-
broker-a-s.properties:broker-a的从节点配置文件
-
broker-b.properties:broker-b的主节点配置文件
-
broker-b-s.properties:broker-b-s的从节点配置文件
假设我们用两台设备搭建集群,我们可以采用配置文件交叉的方式搭建集群。 -
192.168.0.11 Centos_02
192.168.0.13 Centos_03 -
在192.168.0.11配置broker-a.properties,broker-b-s.properties配置文件。
在192.168.0.13配置broker-b.properties,broker-a-s.properties配置文件。
这样达到每台机器相互之间都有个备份的目的。 -
提供的模板配置文件内容如下:
自己去配置的 按需配置192.168.0.11的broker-a.properties
#mq集群名称
brokerClusterName=DefaultCluster
#brokerName名称,叫作broker-a
brokerName=broker-a
#brokerId=0;表示主节点;brokerId大于0从节点。
brokerId=0
#nameServer地址,分号分割,根据自己的ip地址配置。
namesrvAddr=192.168.0.11:9876;192.168.0.13:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭。
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭。
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10911
#Broker 对外服务的监听端口,
deleteWhen=04
#Broker 对外服务的监听端口,
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/app/rocketmq-4.7.1/store/broker-a
#commitLog 存储路径
storePathCommitLog=/usr/local/app/rocketmq-4.7.1/store/broker-a/commitlog
#消费队列存储路径
storePathConsumeQueue=/usr/local/app/rocketmq-4.7.1/store/broker-a/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/app/rocketmq-4.7.1/store/broker-a/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/app/rocketmq-4.7.1/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/app/rocketmq-4.7.1/store/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
brokerRole=ASYNC_MASTER
#刷盘方式
flushDiskType=ASYNC_FLUSH
自己去配置的 按需配置192.168.0.11的broker-b-s.properties
#所属集群名字
brokerClusterName=DefaultCluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.0.11:9876;192.168.0.13:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10920
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/app/rocketmq-4.7.1/store/broker-b-s
#commitLog 存储路径
storePathCommitLog=/usr/local/app/rocketmq-4.7.1/store/broker-b-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/app/rocketmq-4.7.1/store/broker-b-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/app/rocketmq-4.7.1/store/broker-b-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/app/rocketmq-4.7.1/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/app/rocketmq-4.7.1/store/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
brokerRole=SLAVE
#刷盘方式
flushDiskType=ASYNC_FLUSH
192.168.0.13配置broker-b.properties,broker-a-s.properties和上面一样
这样配置部分就算好了。
这里我初始化了一些存储路径,指定日志输出,你也可以不指定。
接下来就是启动部分。
- 先启动192.168.0.11和192.168.0.13的nameserver
nohup mqnamesrv &
- 启动成功,jps查看进程。
- 启动broker,首先启动192.168.0.11的主节点。
cd /usr/local/app/rocketmq-4.7.1/bin
nohup mqbroker -c ../conf/2m-2s-async/broker-a.properties &
- broker-a启动成功,如下:
接下来我们启动192.168.0.13上的broker-a-s节点,从节点启动成功。
mqbroker -c ../conf/2m-2s-async/broker-a-s.properties &
再启动192.168.0.13上的broker-b主节点,从节点启动成功。
mqbroker -c ../conf/2m-2s-async/broker-b.properties &
接下来我们启动192.168.0.11上的broker-b-s节点,从节点启动成功。
nohup mqbroker -c ../conf/2m-2s-async/broker-b-s.properties &
至此我们两对节点都启动完成,输入下面命令集群启动完成。
mqadmin clusterList -n 192.168.0.11:9876;192.168.0.13:9876
- rocketmq其实也有自身的维护界面,只不过需要我们自己去下载源码运行。
我们可以通过rocketmq社区扩展版下载源码,
编译rocketmq-console工程:
1.这是一个springboot项目,首先需要修改下application.properties,红色部分需要根据自己实际情况进行配置。
2.进行编译打包步骤
mvn clean package -Dmaven.test.skip=true
3.将target目录下的jar包上传到虚拟机上,以java - jar 的命令启动。启动成功,可以访问如下图。
至此,一个简单版本的集群算是初步完成了。