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