1. 下载安装
下载地址:
http://rocketmq.apache.org/dowloading/releases/
我下载的是:rocketmq-all-4.5.2-bin-release.zip
https://archive.apache.org/dist/rocketmq/4.5.2/rocketmq-all-4.5.2-bin-release.zip
解压文件:
unzip rocketmq-all-4.5.2-bin-release.zip
mv rocketmq-all-4.5.2-bin-release /usr/local/rocketmq
默认的 RocketMQ 占用内存多达 8G,很变态,在阿里云买的入门级 ECS 根本都跑不起来,需要修改默认 JVM 内存大小,编辑 tool.sh、runbroker.sh、runserver.sh 三个文件,我本机用于测试,设置的比较小:
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn64m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m"
2. 启动 NameServer
默认启动 NameServer:
nohup sh /usr/local/rocketmq/bin/mqnamesrv &
查看启动日志:
tail -f ~/logs/rocketmqlogs/namesrv.log
3. 启动 Broker
默认启动 Broker:
nohup sh /usr/local/rocketmq/bin/mqbroker -n 127.0.0.1:9876 &
查看启动日志:
tail -f ~/logs/rocketmqlogs/broker.log
4. 测试 Producer 和 Consumer
验证生产消息:
export NAMESRV_ADDR=127.0.0.1:9876
sh /usr/local/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
验证消费消息:
sh /usr/local/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
5. 停止服务
首先停止 Broker:
sh /usr/local/rocketmq/bin/mqshutdown broker
再停止 NameServer:
sh /usr/local/rocketmq/bin/mqshutdown namesrv
6. 其他命令
查看 Topic:
sh /usr/local/rocketmq/bin/mqadmin topicList -n 127.0.0.1:9876
创建 Topic:
sh /usr/local/rocketmq/bin/mqadmin updateTopic -n 127.0.0.1:9876 -b 127.0.0.1:10911 -t ENSKDEMO
设置自动创建 Topoc:
nohup sh /usr/local/rocketmq/bin/mqbroker -n 127.0.0.1:9876 autoCreateTopicEnable=true &
7. 设置公网访问
服务器部署了 RocketMQ 之后,本地想访问需要设置公网 IP,否则会出现 RemotingConnectException:connect to failed
错误,设置流程如下。
指定公网 IP 启动 NameServer:
nohup sh /usr/local/rocketmq/bin/mqnamesrv -n xx.xx.xx.xx:9876 &
xx.xx.xx.xx 为公网 IP
修改服务器中 Broker 配置,添加公网 IP:
vim /usr/local/rocketmq/conf/broker.conf
最下面新增一行:
brokerIP1=xx.xx.xx.xx # 你的公网 IP
指定公网 IP 和配置文件启动 Broker:
nohup sh /usr/local/rocketmq/bin/mqbroker -n xx.xx.xx.xx:9876 -c /usr/local/rocketmq/conf/broker.conf &
公网服务器也需要开通端口,NameServer 默认监听端口 9876,Broker Master 默认监听端口 10912,Broker 默认监听端口 10911,Broker VIP 通道默认监听端口 10909(关闭VIP通道即可停用该端口)。
作者 Github : tojohnonly , 博客 : EnskDeCode