基础环境
CentOS-7-x86_64-Minimal-2009
jdk 1.8.0_321
4G+ free
安装及启动
1.下载rocketmq
wget https://archive.apache.org/dist/rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip
2. 修改脚本(解决启动是包内存不足的bug,如果内存充足可以忽略)
bin/runserver.sh
bin/runbroker.sh
vim bin/runserver.sh
修改内存:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -
XX:MetaspaceSize=64mm -XX:MaxMetaspaceSize=160mm"
vim bin/runbroker.sh
修改内存:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:PermSize=128m
-XX:MaxPermSize=128m"
3.环境变量设置
vim /etc/profile
在底部加入行 export PATH=$PATH:/opt/rocketmq/bin
source /etc/profile
4.启动namesrv
mqnamesrv
# 查看启动日志
tail -f ~/logs/rocketmqlogs/namesrv.log
5.启动Broker
mqbroker -n localhost:9876
# 查看启动日志
tail -f ~/logs/rocketmqlogs/broker.log
RocketMQ环境测试
#1.设置环境变量
export NAMESRV_ADDR=localhost:9876
# 2.使用安装包的Demo发送消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
# 1.设置环境变量
export NAMESRV_ADDR=localhost:9876
# 2.接收消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
关闭RocketMQ
# 1.关闭NameServer
mqshutdown namesrv
# 2.关闭Broker
mqshutdown broker
错误问题处理:一般安装rocket没有什么问题,测试都可以正常跑的通,但是当centOS有多张网卡,多个ip时(部署docker服务的centOS就存在多张网卡)默认使用虚拟网卡(docker虚拟ip),导致无法向其他内网其他机器/外网 提供服务,导致项目访问失败。
解决方案
添加配置文件
echo "brokerIP1=192.168.80.121" >> /opt/rocketmq/conf/broker.properties
启动时添加参数 -c /opt/rocketmq/conf/broker.properties
访问时如出现No route info of this topic, *** ,需要开启自动创建主题功能
autoCreateTopicEnable=true 或者手动创建主题
例:
mqbroker -n 192.168.80.121:9876 autoCreateTopicEnable=true -c /opt/rocketmq/conf/broker.properties
# 查看指定NameServer下的主题
[root@node4 ~]# mqadmin topicList -n node1:9876
# 查看指定NameServer,指定集群名称下的主题
[root@node4 ~]# mqadmin topicList -n node1:9876 -c DefaultCluster
# 创建主题,指定NameServer,指定Broker 指定主题名称,指定主题的写队列个数,指定读主题队
列个数
[root@node4 ~]# mqadmin updateTopic -b node1:10911 -r 3 -w 3 -t tp_admin_01
# 描述主题,指定NameServer,指定主题名称
[root@node4 ~]# mqadmin topicStatus -t tp_admin_01 -n node1:9876
# 创建主题,指定NameServer,指定集群名称,指定主题名称,指定读主题队列个数,指定写主题队
列个数
[root@node4 ~]# mqadmin updateTopic -c DefaultCluster -n node1:9876 -r 3 -w
3 -t tp_admin_02
# 查看指定主题的状态,指定NameServer地址,指定主题名称
[root@node4 ~]# mqadmin topicStatus -t tp_admin_02 -n node1:9876
#删除主题,指定NameServer地址,指定集群名称,指定主题名称
[root@node3 ~]# mqadmin deleteTopic -n node1:9876 -c DefaultCluster -t
tp_admin_03
# 查看主题所在的集群,指定NameServer地址,指定主题名称。因为不同集群可以拥有同名的主题,
并且不同集群可以注册到同一个NameServer
[root@node3 ~]# mqadmin topicClusterList -n node1:9876 -t tp_admin_02
# 计算消费的负载均衡,不同的-i列表,计算不同的消费平衡负载结果
[root@node3 ~]# mqadmin allocateMQ -n node1:9876 -t tp_admin_02 -i
node1,node3
[root@node3 ~]# mqadmin allocateMQ -n node1:9876 -t tp_admin_02 -i
node1,node2,node3,node4
# 打印Topic订阅关系、TPS、积累量、24h读写总量等信息
[root@node3 ~]# mqadmin statsAll -n node1:9876