下载安装包:
链接:https://pan.baidu.com/s/1EF9BJ-O4kgWl5VWuygZRUw
提取码:1234
RocketMq集群搭建和命令学习
nameserver 关闭 sh mqshutdown namesrv
启动路径 cd /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release/bin
启动命令 nohup sh mqnamesrv &
查看是否启动命令 tail -f ~/logs/rocketmqlogs/namesrv.log
启动 成功
关闭 sh mqshutdown namesrv
broker 关闭 sh mqshutdown broker
启动路径 cd /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release/bin
启动命令 nohup sh mqbroker -n localhost:9876 &
查看是否启动命令 tail -f ~/logs/rocketmqlogs/broker.log
启动成功
关闭 sh mqshutdown broker
RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改JVM内存大小
# 编辑runbroker.sh和runserver.sh修改默认JVM大小
vi runbroker.sh
vi runserver.sh
修改为256M就行了
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
在bin目录下设置环境变量
发送命令(进入到bin的上一级目录)
进入目录文件夹 : cd /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release
设置一个路径:export NAMESRV_ADDR=localhost:9876
发送命令: bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
发送后会打印很多日志
接受命令
进入目录文件夹 : cd /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release
设置一个路径: export NAMESRV_ADDR=localhost:9876
接受命令: bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
接收后也会打印很多日志
# nameserver 域名配置
192.168.153.130 rocketmq-nameserver1
192.168.153.132 rocketmq-nameserver2
# broker 域名配置
192.168.153.130 rocketmq-master1
192.168.153.130 rocketmq-slave2
192.168.153.132 rocketmq-master2
192.168.153.132 rocketmq-slave1
配置完成后, 重启网卡
systemctl restart network
service network restart #重启网络连接
1:查看防火状态
systemctl status firewalld
service iptables status
2:暂时关闭防火墙
systemctl stop firewalld
service iptables stop
3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
4:重启防火墙
systemctl enable firewalld
service iptables restart
5:永久关闭后重启
chkconfig iptables on
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
设置环境变量(设置后不需要再去bin目录下执行文件,再任意文件夹就可以执行)
#set rocketmq
ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-all-4.4.0-bin-release
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH
使得配置立刻生效:
source /etc/profile
创建消息存储路径(默认home目录下)
在192.168.153.130:9876;192.168.153.132:9876这两个服务器分别创建这2个文件夹组
mkdir /usr/local/rocketmq/store mkdir /usr/local/rocketmq/store/commitlog mkdir /usr/local/rocketmq/store/consumequeue mkdir /usr/local/rocketmq/store/index mkdir /usr/local/rocketmq/store-s mkdir /usr/local/rocketmq/store-s/commitlog mkdir /usr/local/rocketmq/store-s/consumequeue mkdir /usr/local/rocketmq/store-s/index |
### 3.3.8 broker配置文件
#### 1)master1
服务器:192.168.153.130
vi /usr/soft/rocketmq/conf/2m-2s-sync/broker-a.properties
修改配置如下:
enablePropertyFilter = true #所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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=SYNC_MASTER #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128 |
#### 2)slave2
服务器:192.168.153.130
vi /usr/soft/rocketmq/conf/2m-2s-sync/broker-b-s.properties
修改配置如下:
enablePropertyFilter = true #所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=11011 #删除文件时间点,默认凌晨 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-s #commitLog 存储路径 storePathCommitLog=/usr/local/rocketmq/store-s/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store-s/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store-s/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store-s/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/store-s/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 异步复制Master #- SYNC_MASTER 同步双写Master #- SLAVE brokerRole=SLAVE #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUS H 同步刷盘 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128 |
#### 3)master2
服务器:192.168.153.132
vi /usr/soft/rocketmq/conf/2m-2s-sync/broker-b.properties
修改配置如下:
enablePropertyFilter = true #所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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=SYNC_MASTER #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=SYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128 |
#### 4)slave1
服务器:192.168.153.132
vi /usr/soft/rocketmq/conf/2m-2s-sync/broker-a-s.properties
修改配置如下:
enablePropertyFilter = true #所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=11011 #删除文件时间点,默认凌晨 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=SLAVE #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128 |
异常报错修改
java.lang.RuntimeException: Lock failed,MQ already started
这种就是有可能是你所创建的消息存储路径mq-store少了从slave的目录
1)启动NameServe集群
nohup sh mqnamesrv &
2)启动Broker集群
集群地址:192.168.153.130
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release/conf/2m-2s-sync/broker-a.properties &
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release/conf/2m-2s-sync/broker-b-s.properties &
集群地址:192.168.153.132
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release/conf/2m-2s-sync/broker-b.properties &
nohup sh mqbroker -c /usr/local/rocketmq/rocketmq-all-4.4.0-bin-release/conf/2m-2s-sync/broker-a-s.properties &
可视化安装包下载地址
git clone https://github.com/apache/rocketmq-externals
cd rocketmq-console
找到这个文件
C:\Users\adminXu\Desktop\rocketmq-console\src\test\resources\application.properties
修改这个IP地址: rocketmq.config.namesrvAddr
server.contextPath= server.port=8080 ### SSL setting #server.ssl.key-store=classpath:rmqcngkeystore.jks #server.ssl.key-store-password=rocketmq #server.ssl.keyStoreType=PKCS12 #server.ssl.keyAlias=rmqcngkey #spring.application.index=true spring.application.name=rocketmq-console spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true logging.config=classpath:logback.xml #if this value is empty,use env value rocketmq.config.namesrvAddr NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876 rocketmq.config.namesrvAddr=192.168.153.130:9876;192.168.153.132:9876 #if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true rocketmq.config.isVIPChannel= #rocketmq-console's data path:dashboard/monitor rocketmq.config.dataPath=/tmp/rocketmq-console/data #set it false if you don't want use dashboard.default true rocketmq.config.enableDashBoardCollect=true #set the message track trace topic if you don't want use the default one rocketmq.config.msgTrackTopicName= rocketmq.config.ticketKey=ticket #Must create userInfo file: ${rocketmq.config.dataPath}/users.properties if the login is required rocketmq.config.loginRequired=false |
安装可视化插件
下载地址:
链接:https://pan.baidu.com/s/1QClbchsRz1zDpX0cEvCusw
提取码:1234
解压 unzip rocketmq-externals-master.zip
解压目录
打包命令(需要配置mavne环境变量)
mvn clean package -Dmaven.test.skip=true
进入‘\rocketmq-externals\rocketmq-console’文件夹,执行‘mvn clean package -Dmaven.test.skip=true’,编译生成,该过程耗时较长,也有可能打包失败(需要下载依赖jar包,也有可能jar下载失败),如果打包失败可以导入idea进行打包
我第一次打包失败了,然后重新打包成功了:如下
这是我打包的jar,不知道能否可以使用,自己可以测试
链接:https://pan.baidu.com/s/1Hyd1bIRPKFbi7LeWJt6-ew
提取码:1234
便已完成,会生成target目录,进入target目录后执行:java -jar rocketmq-console-ng-1.0.1.jar,启动完成后,
将jar包 rocketmq-console-ng-1.0.1.jar 上传到 /usr/soft目录下
通过 java -jar rocketmq-console-ng-1.0.1.jar 前台执行执行jar包
通过 nohup java -jar /usr/local/rocketmq-4.5/rocketmq-console/rocketmq-console-ng-1.0.1.jar & 后台执行执行jar包
通过浏览器访问 192.168.153.130:8080查看
SQL基本语法使用
Rocketmq使用sql过滤时报 MQClientException: CODE: 1 DESC: The broker does not support consumer to filter message by SQL92
如果是集群像我这种就要改两个配置文件,集群二:broker-b.properties,broker-a-s.properties 和 集群一:broker-a.properties,broker-b-s.properties
这四个文件加上一行
enablePropertyFilter = true