rocketmq常見問題及使用 新手篇

一 部署階段

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中看到發送的消息了。