RocketMQ
要求
- ECS服务器
- 安全组规则添加出入方向的9876、10909、10911端口
- wget
- zip、unzip
- JDK
- Maven(源码安装时需要)
安装RocketMQ
选择二进制文件安装
# 下载最新版本4.8的二进制文件
wget https://mirrors.gigenet.com/apache/rocketmq/4.8.0/rocketmq-all-4.8.0-bin-release.zip
# 解压
unzip rocketmq-all-4.8.0-bin-release.zip
修改JVM内存设置
根据机器情况修改内存大小
vi bin/runserver.sh
# JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
vi bin/runbroker.sh
# JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
vi bin/tools.sh
# JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
启动和关闭
启动
以下操作均在RocketMQ目录下
ls -l
total 48
drwxr-xr-x 2 root root 4096 Dec 9 19:46 benchmark
drwxr-xr-x 3 root root 4096 Dec 4 14:26 bin
drwxr-xr-x 6 root root 4096 Apr 13 21:07 conf
drwxr-xr-x 2 root root 4096 Dec 9 19:46 lib
-rw-r--r-- 1 root root 17336 Oct 23 10:29 LICENSE
-rw-r--r-- 1 root root 1338 Dec 4 14:26 NOTICE
-rw-r--r-- 1 root root 5132 Dec 4 14:26 README.md
启动Namesrv
# 启动Namesrv nohup sh bin/mqnamesrv & # 查看启动日志 tail -f ~/logs/rocketmqlogs/namesrv.log
启动Broker
在 conf 目录下,RocketMQ 提供了多种 Broker 的配置文件:
- broker.conf :单主,异步刷盘。
- 2m-noslave/ :双主,异步刷盘。
- 2m-2s-async/ :两主两从,异步复制,异步刷盘。
- 2m-2s-sync/ :两主两从,同步复制,异步刷盘。
- dledger/ :Dledger 集群,至少三节点。
# 修改broker.conf vi conf/broker.conf # 在末尾添加,公网地址(broker默认是通过私有ip启动,会导致客户端无法远程连接) # namesrvAddr = ECS公网地址 # brokerIP1 = ECS公网地址
# 启动Broker,并开启允许自动创建topic,localhost可以换成ECS的公有ip nohup sh bin/mqbroker -c conf/broker.conf -n localhost:9876 autoCreateTopicEnable=true & # 查看启动日志 tail -f ~/logs/rocketmqlogs/broker.log
关闭
# 关闭namesrv服务
sh bin/mqshutdown namesrv
# 关闭broker服务
sh bin/mqshutdown broker
测试
- 发送消息
# 设置 Namesrv 服务器的地址
export NAMESRV_ADDR=127.0.0.1:9876
# 执行生产者 Producer 发送测试消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
- 消费消息
# 设置 Namesrv 服务器的地址
export NAMESRV_ADDR=127.0.0.1:9876
# 执行消费者 Consumer 消费测试消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
简单示例
在Rocketmq仓库的example 目录下,提供了 RocketMQ 示例。
常用命令
# 查看具体命令 :
sh mqadmin
# 查看具体命令的使用 :
sh mqadmin help [具体命令]
# 示例
#查看所有消费组group:
sh mqadmin consumerProgress -n 192.168.1.23:9876
#查看指定消费组下的所有topic数据堆积情况:
sh mqadmin consumerProgress -n 192.168.1.23:9876 -g warning-group
#查看所有topic:
sh mqadmin topicList -n 192.168.1.23:9876
#查看topic信息列表详情统计
sh mqadmin topicstatus -n 192.168.1.23:9876 -t topicWarning
# 新增topic
sh mqadmin updateTopic –n 192.168.1.23:9876 –c DefaultCluster –t topicWarning
# 删除topic
sh mqadmin deleteTopic –n 192.168.1.23:9876 –c DefaultCluster –t topicWarning
# 查询集群消息
sh mqadmin clusterList -n 192.168.1.23:987
遇到的错误
mqadmin命令执行报错 解决:vim打开
tools.sh,在JAVA_OPT配置中,在-Djava.ext.dirs这一行的后面添加本机java
ext的路径 修改前:JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m" JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext" JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
修改后:
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m" JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:/usr/lib/jvm/jre/lib/ext" JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"