虛擬機:VirtualBox
最好不要用 網絡地址轉換(NAT)端口轉發 模式,RocketMQ在程序訪問的時候只需要填寫壹個NameSrv地址,但是會從NameSrv拿Broker的地址(Broker端口10911,假如本機地址 10.10.1.22,虛擬機地址10.10.1.23,妳的端口映射:10.10.1.22:10911 -> 10.10.1.23:10911,很不幸,RocketMQ會拿到10.10.1.23:10911去嘗試連接Broker,這必然是連接不上的,而且MQ報錯信息也很簡單粗暴,後面也會經常遇到: No route info of this topic XXX )
操作系統:Ubuntu 18.04
JDK:1.8?
之前采用的JDK12,坑比較多,JDK12對JVM部分做了調整,RocketMQ提供的配置是基於JDK1.8的,改了半天也沒有弄好
RocketMQ:4.4.0
搭建很簡單,裝好JDK,配置好環境變量,然後啟動NameSrv及Broker
Rocket目錄: ~/soft/rocketmq-all-4.4.0-bin-release ,之後的命令都是在這個目錄下執行的
虛擬機IP:10.1.11.115
nohup sh bin/mqnamesrv -n 10.1.11.155:9876 &
啟動成功後日誌顯示:The Name Server boot success. serializeType=JSON
nohup? sh bin/mqbroker -n 10.1.11.155:9876 -c conf/broker.conf autoCreateTopicEnable=true &
啟動成功後日誌顯示:
The broker[broker-a, 10.1.11.155:10911] boot success. serializeType=JSON and name server is 10.1.11.155:9876
註意斜體部分的配置文件: broker.conf ? 需要新增三行配置:
第壹行指定Name Server地址,第二行及第三行執行Broker的地址,為啥有倆,據說有壹個是給VIP通道用的,註意這裏用的IP都是具體的IP,建議不要使用 localhost 或者 127.0.0.1,不然有可能出現? No route info of this topic XXX
autoCreateTopicEnable 這個屬性,允許自動創建topic,我配置了這個,沒有毛線用處,沒有深究,都是手工創建的Topic,創建及查看Topic的cmd命令如下:
創建:sh bin/mqadmin updateTopic -n namesrv地址 -b broker地址 -t topic名稱
示例:sh bin/mqadmin updateTopic -n 10.1.11.115:9876 -b 10.1.11.115:10911 -t asdTopic
查看所有信息,含Topic :sh mqadmin topicList -n
NameServer 及 Broker啟動完畢後,可以用自帶的Tools模擬Producer及Consumer,命令如下:
首先要執行 export NAMESRV_ADDR=10.1.11.155:9876, 告訴 Producer 和 Consumer Name Server 的地址
啟動Producer,該Producer會產生壹批數據推送到MQ
命令:sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
最後啟動Consumer接收Producer發送的消息
命令:sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
關閉 broker :sh bin/mqshutdown broker
關閉 name server:sh bin/mqshutdown namesrv
這壹篇主要是MQ的搭建及基礎驗證,參考? http://rocketmq.apache.org/docs/quick-start/ ,下壹篇主要是通過JAVA模擬Producer及Consumer。