一、環(huán)境清單
? ? 想系統(tǒng)學習下RocketMQ,所謂萬事開頭難,環(huán)境跑起來再說。
? ? 虛擬機:VirtualBox
? ? ? ? 最好不要用 網(wǎng)絡地址轉(zhuǎn)換(NAT)端口轉(zhuǎn)發(fā) 模式,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報錯信息也很簡單粗暴,后面也會經(jīng)常遇到:No route info of this topic XXX)
? ? 操作系統(tǒng):Ubuntu 18.04
? ? JDK:1.8?
????????之前采用的JDK12,坑比較多,JDK12對JVM部分做了調(diào)整,RocketMQ提供的配置是基于JDK1.8的,改了半天也沒有弄好????
? ? RocketMQ:4.4.0
? ? 搭建很簡單,裝好JDK,配置好環(huán)境變量,然后啟動NameSrv及Broker
? ? Rocket目錄:~/soft/rocketmq-all-4.4.0-bin-release,之后的命令都是在這個目錄下執(zhí)行的
? ? 虛擬機IP:10.1.11.115
二、RocketMQ啟動/驗證/關閉
? ? 1、啟動Name Server:
????????????nohup sh bin/mqnamesrv -n 10.1.11.155:9876 &
? ? ? ????? 啟動成功后日志顯示:The Name Server boot success. serializeType=JSON
? ? 2、啟動Broker:
????????????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地址,第二行及第三行執(zhí)行Broker的地址,為啥有倆,據(jù)說有一個是給VIP通道用的,注意這里用的IP都是具體的IP,建議不要使用 localhost 或者 127.0.0.1,不然有可能出現(xiàn)?No route info of this topic XXX
? ??????????autoCreateTopicEnable 這個屬性,允許自動創(chuàng)建topic,我配置了這個,沒有毛線用處,沒有深究,都是手工創(chuàng)建的Topic,創(chuàng)建及查看Topic的cmd命令如下:
? ? ? ? ? ? 創(chuàng)建: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
? ?3、驗證
? ? ? ? ? ? NameServer 及 Broker啟動完畢后,可以用自帶的Tools模擬Producer及Consumer,命令如下:
? ??????????首先要執(zhí)行 export NAMESRV_ADDR=10.1.11.155:9876,告訴 Producer 和 Consumer Name Server 的地址
????????????啟動Producer,該Producer會產(chǎn)生一批數(shù)據(jù)推送到MQ
????????????命令:sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
????????????最后啟動Consumer接收Producer發(fā)送的消息
????????????命令:sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
? ? 4、關閉服務
? ??????關閉 broker :sh bin/mqshutdown broker
????????關閉 name server:sh bin/mqshutdown namesrv
? ? ????這一篇主要是MQ的搭建及基礎驗證,參考?http://rocketmq.apache.org/docs/quick-start/,下一篇主要是通過JAVA模擬Producer及Consumer。
????????? ??
? ??