官网:
https://rocketmq.apache.org/zh/
安装RocketMQ 5.2.0
下载、解压即完成部署。
wget https://dist.apache.org/repos/dist/release/rocketmq/5.2.0/rocketmq-all-5.2.0-bin-release.zip
unzip rocketmq-all-5.2.0-bin-release.zip
启动之前修改jvm启动内存
cd bin
#修改:runserver.sh 、runbroker.sh 文件,将启动内存改小
-Xms1g -Xmx1g -Xmn512m
启动nameServer
nohup sh bin/mqnamesrv &
#关闭 nameServer
sh bin/mqshutdown namesrv
启动Broker+Proxy
可以增加配置
#配置域名方式访问
namesrvAddr=mq-test.aa.com:9876
brokerIP1=mq-test.aa.com
#配置没有消费客户端的时候自动删除消费分组
deleteWhenConsumerIdle=true
autoDeleteGroup=true
启动
nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
#关闭Broker
sh bin/mqshutdown broker
部署 RocketMQ Dashboard
下载页:
https://rocketmq.apache.org/zh/download
下载并安装:
wget https://dist.apache.org/repos/dist/release/rocketmq/rocketmq-dashboard/1.0.0/rocketmq-dashboard-1.0.0-source-release.zip
#安装Maven
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum -y install apache-maven
#解压、编译
unzip rocketmq-dashboard-1.0.0-source-release.zip
cd rocketmq-dashboard-1.0.0-source-release
mvn clean package -Dmaven.test.skip=true
#修改配置文件application.properties
rocketmq.config.namesrvAddr=127.0.0.1:9876
#启动 rocketmq-dashboard
nohup java -jar rocketmq-dashboard-1.0.0.jar &
关于namesrvAddr
最好用域名代替Ip,在服务器上的/etc/hosts文件中配置,本机开发时也配置hosts
你的ip namesrv.rocket
最后在rocketmq-dashboard中配置,保证各端均能访问,否则设置成内网Ip,则通过公网无法访问,设置成公网ip,则内网访问不合算,也不安全。
基于springboot开发版本一致性
使用rocketmq-spring-boot-starter 2.2.3 版本,对应的rocketmq服务器版本:5.2.0
对应的rocketmq-client、springboot、springcloud
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.9.3</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.3</version>
</dependency>
<spring-boot.version>2.5.9</spring-boot.version>
<spring-cloud.version>2020.0.6</spring-cloud.version>
常用命令
1、查看消息
./mqadmin queryMsgByUniqueKey -n 127.0.0.1:9876 -t topic_snapshot -i 7F0000012E5C18B4AAC26F5AAA4E0000
# -n NameServer 服务地址,格式 ip:port
# -i uniqe msg id
# -t topic名称
开启ACL
1、rocketmq broker.conf配置文件中开启ACL
#开启用户认证
aclEnable=true
#指定认证配置文件
aclAccessResourcePath=/data/app/rocketmq/conf/plain_acl.yml
修改plain_acl.yml
这个配置文件是动态生效的,修改后会被MQ动态加载,即时生效
globalWhiteRemoteAddresses:
accounts:
# 第一个普通账户
- accessKey: RocketMQ
secretKey: 12345678
whiteRemoteAddress:
admin: false
defaultTopicPerm: DENY
defaultGroupPerm: SUB
topicPerms:
- TopicTest=PUB
groupPerms:
- oms_consumer_group=DENY
# 第二个是admin账户
- accessKey: rocketmq2
secretKey: 12345678
whiteRemoteAddress:
# if it is admin, it could access all resources
admin: true
# RocketMQ有个bug,admin默认权限不对,所以下面默认给发布和订阅权限
defaultTopicPerm: PUB|SUB
defaultGroupPerm: PUB|SUB
修改tools.yml
accessKey: 普通用户accessKey
secretKey: 普通用户secretKey
重启rocketmq的nameserver,broker
2、rocketmq-dashboard 开启acl
application.properties中修改
rocketmq.config.accessKey=rocketmq2
rocketmq.config.secretKey=12345678
user.properties中加入用户账户配置
#配置格式:username=password[,N] #N is optional, 0 (Normal User); 1 (Admin)
# Define Admin admin用户
rocketmq2=12345678,1
# Define Users 普通用户列表
RocketMQ=12345678
user2=user2
重启rocketmq-dashboard