rocketmq常見問題及使用 新手篇

沐一發表於2021-05-29

一 部署階段

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

 

相關文章