今天從零開始學習RocketMQ,以前學習過JMS規範以及ActiveMQ相關知識,但總感覺RocketMQ給我帶來一種莫名的好感,加上公司目前也在使用RocketMQ,所以,很有必要學習一波,乘年輕剛入職場,多學點、研究點技術,相信結局總是美好的。
本文很簡單,就是基本的windows環境搭建,非叢集版本。請不要問我為什麼不在linux上面進行搭建,首先我用不慣虛擬機器,第二之前買的阿里雲學生機過期了,賊難受。學會在windows上搭建RocketMQ服務之後,在linux上面搭建也是同樣的步驟和道理的。本文最後還會放出小編在搭建過程中犯過的錯誤以及解決方法,讓大家能更快地進行服務搭建。
一、windows下RocketMQ服務搭建
首先假設我們已經對RocketMQ的相關架構有所瞭解,如果你還沒有進行了解學習,可以先到官方網站或者找找部落格進行學習。RocketMQ的啟動流程主要有以下幾個步驟:
-
1、啟動命名服務
NameServer
-
2、
Broker
的啟動 -
3、建立
Provider
及Consumer
,模擬訊息傳送接收 -
4、關閉
RocketMQ
伺服器
1、啟動命名服務NameServer
NameServer
的預設啟動類為:org.apache.rocketmq.namesrv.NamesrvStartup
2、Broker
的啟動
Broker
的預設啟動類為:org.apache.rocketmq.broker.BrokerStartup
3、建立Provider
及Consumer
,模擬訊息傳送接收
生產訊息:
消費訊息:
4、關閉RocketMQ
伺服器
先關閉Broker
,然後再關閉名稱伺服器。
二、相關錯誤及解決方法
- 1、下載完rocketmq之後必須配置環境變數
ROCKETMQ_HOME
,否則報錯.
那麼為什麼會出現這樣的錯誤呢?很簡單,你開啟mqnamesrv.cmd
檔案就知道了,裡邊有這麼一段程式碼:
if not exist "%ROCKETMQ_HOME%\bin\runserver.cmd" echo Please set the ROCKETMQ_HOME variable in your environment! & EXIT /B 1
複製程式碼
如果不存在該環境變數就執行echo
語句。
- 2、解壓壓縮包的路徑不能出現空格
也就是說你下載完rocketmq壓縮包之後,解壓路徑不能出現類似下面的情況:
e://Program File/rocketmq
出現空格,會報“找不到主類”的錯誤
三、總結
搭建rocketmq環境比想象中要簡單,過程中也踩了兩個坑,在這裡分享一個解決啟動問題的思路,那就是如果你實在找不出問題該如何解決,那麼你可以嘗試開啟cmd
檔案,檢視原始碼,看看到底啟動的邏輯,問題會清晰很多。
上面也指出了namesrv
和broker
的相關啟動類,所有的啟動過程都在原始碼的main()
方法中,可以進去一探究竟~~