一 部署階段
1.啟動命令
nameServer啟動:nohup sh bin/mqnamesrv -n ip地址:9876 &
broker啟動:nohup sh bin/mqbroker -n ip地址:9876 autoCreateTopicEnable=true -c conf/broker.conf &
注:autoCreateTopicEnable配置是否自動建立主題
2.服務關閉命令
nameServer關閉: sh bin/mqshutdown namesrv
broker關閉: sh bin/mqshutdown broker
3.啟動Broker如果因為記憶體不足失敗,需要編輯如下兩個配置檔案,修改JVM記憶體大小
vi runbroker.sh
vi runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
在Linux中,如果仍然記憶體溢位,可以嘗試配置swap空間。
4.在雲伺服器上部署要注意的問題
4.1 要在安全組中配置rocketmq使用到的幾個埠號為開放狀態,如下圖,否則會出現連線不上的情況
4.2 雲伺服器例項的公網訪問一般通過私有網路卡對映完成,在例項內部無法查詢到公網IP地址。
所帶來的影響是,軟體自動識別的出的IP地址是內網地址,無法訪問,需要顯式的配置公網IP地址。
在rocketmq中如何配置,會在下面說明。
二 生產者服務傳送訊息
1.程式碼報錯:connect to <x.x.x.x:10911> failed或者sendDefaultImpl call timeout。
請檢查broker啟動日誌中的brokerIP地址和生產者所在地址是否能連通
The broker[broker-a, x.x.x.x:10911] boot success. serializeType=JSON and name server is x.x.x.x:9876
這裡預設是系統自動識別的IP地址,可能是無法連線的內網地址。
需要在conf/broker.conf中配置brokerIP1,配置為公網IP
為何broker和生產者需要聯通,可以參考下圖理解。
生產者服務需要和nameServer以及broker進行資料交換,所以它們之間的網路需要是聯通的。
同理,消費者服務也需要和nameServer以及broker網路聯通。
2.訊息傳送成功後,就可以在管理控制檯rocketmq-console中看到傳送的訊息了。