1. 程式人生 > 程式設計 >RocketMQ踩坑之部署

RocketMQ踩坑之部署

作為一個剛學習rocketMQ的小白,自然會去開啟官網,學習裡面的檔案,部署rocketMQ,自然是第一步了。

官網建議使用Linux/Unix/Mac系統部署,咱也不怕,不是有虛擬機器器嗎?或者使用雲伺服器。廢話不多說,直接開始我們正式的工作。

1. 從發行版下載和構建(我下載的是4.6.0版本)這裡基本和官方檔案差不多,只是裡面的資料夾結構有點不一樣,具體原因還不清楚是什麼,有了解的同學嗎,麻煩解釋解釋?

1> unzip rocketmq-all-4.6.0-source-release.zip
2> cd rocketmq-all-4.6.0/
3> mvn -Prelease-all -DskipTests clean install -U
4>cd
distribution/target/apache-rocketmq // 1官網路徑 4>cd distribution/target/rocketmq-4.6.0/rocketmq-4.6.0/ //2 我的路徑 複製程式碼

2. 修改部分引數,這一點務必注意,rocketMQ對伺服器的儲存要求很高,部分同學在用虛擬機器器或雲伺服器啟動的時候會因為記憶體不足而失敗。在bin目錄下(基於上一步的路徑),修改runserver.sh和runbroker.sh裡的引數如下(這個大小根據你們的情況自己調整)

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn500m"
複製程式碼

3. 啟動Name Server和Broker,基本和檔案一樣,下面是啟動命令,我重定向了輸出

nohup sh bin/mqnamesrv >/dev/null 2>&1 &
nohup sh bin/mqbroker -n localhost:9876 >/dev/null 2>&1 &
//檢視啟動日誌
tail -f ~/logs/rocketmqlogs/namesrv.log
tail -f ~/logs/rocketmqlogs/broker.log 
複製程式碼

4. 傳送和接收訊息,按照官網步驟進行,ok,但故事還沒有結束,請往下看

> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
 SendResult [sendStatus=SEND_OK,msgId= ...

> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
 ConsumeMessageThread_%d Receive New Messages: [MessageExt...
複製程式碼

5. 測試關閉伺服器,在bin目錄下通過jps命令可以檢視namesrv和broker是否成功開啟,關閉成功會出現下面的提示

> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK
複製程式碼

6. 伺服器上部署完成後,本地執行Producer,可以參照官網下節的demo,這裡就不貼出來了,當然要記得新增必要的依賴rocketmq-client和fastjson...

No route info of this topic,TopicTest
複製程式碼

7.猜到你很可能遇到了上面的錯誤,但是按照步驟1-4,執行org.apache.rocketmq.example.quickstart.Producer也沒有出現錯誤,那問題出在哪呢?首先應該想到的是防火牆,那麼我們開啟9876埠吧(我用的是centos7,不同系統處理方式不一樣)

firewall-cmd --zone=public --add-port=9876/tcp --permanent
systemctl restart firewalld.service  
複製程式碼

8.再次執行Producer,出現下面錯誤,但10909是什麼?查詢資料得知vip通道埠,預設是開啟的(也可以通過程式碼關閉),因此我們需要再開放一個埠10909

![]([圖片]

)

**9.依舊出現8的錯誤,通過網上資料發現,通過下面方法解決

// conf/broker.conf檔案下新增兩行
brokerIP1=外網IP
namesrvAddr=外網IP(內網IP):9876
//重新啟動broker,命令有所改變
nohup sh bin/mqbroker -c conf/broker.conf >/dev/null 2>&1 &
複製程式碼

10.終於成功了,我們再啟動Consumer,等待了半天,還是沒有接收到訊息,查詢得知是 10911埠(非VIP埠)沒有開啟,我們開啟埠後Consumer也獲得了訊息,部署基本完成