RocketMQ介紹
Apache RocketMQ是一個(gè)分布式消息傳遞和流媒體平臺(tái),具有低延遲、高性能和可靠性、萬(wàn)億級(jí)別的容量和靈活的可伸縮性。
GitHub:https://github.com/apache/rocketmq
官網(wǎng):http://rocketmq.apache.org/
本文版本:rocketmq-4.2.0-SNAPSHOT
下載地址:http://mirror.bit.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip
它提供了各種特性:(翻譯自GitHub)
發(fā)布/訂閱消息傳遞模型
定期消息傳遞
按時(shí)間或偏移量進(jìn)行消息回溯
日志中心流
大數(shù)據(jù)集成
在同一隊(duì)列中可靠的FIFO和嚴(yán)格的有序消息傳遞
有效的拉伸消費(fèi)模式
在一個(gè)隊(duì)列中有百萬(wàn)級(jí)的消息積累容量
多種消息傳遞協(xié)議,如JMS和OpenMessaging
靈活的分布式擴(kuò)展部署體系結(jié)構(gòu)
快速批量消息交換系統(tǒng)。
各種消息過(guò)濾機(jī)制,如SQL和標(biāo)記
用于隔離測(cè)試和云隔離集群的Docker映像。
用于配置、度量和監(jiān)視的功能豐富的管理儀表板
選擇的理由
強(qiáng)調(diào)集群無(wú)單點(diǎn),可擴(kuò)展,任意一點(diǎn)高可用,水平可擴(kuò)展
????????方便集群配置,而且容易擴(kuò)展(橫向和縱向),通過(guò)slave的方式每一點(diǎn)都可以實(shí)現(xiàn)高可用
支持上萬(wàn)個(gè)隊(duì)列,順序消息
????????順序消費(fèi)是實(shí)現(xiàn)在同一隊(duì)列的,如果高并發(fā)的情況就需要隊(duì)列的支持,rocketmq可以滿足上萬(wàn)個(gè)隊(duì)列同時(shí)存在
任性定制你的消息過(guò)濾
????????rocketmq提供了兩種類(lèi)型的消息過(guò)濾,也可以說(shuō)三種可以通過(guò)topic進(jìn)行消息過(guò)濾、可以通過(guò)tag進(jìn)行消息過(guò)濾、還可以通過(guò)filter的方式任意定制過(guò)濾
消息的可靠性(無(wú)Buffer,持久化,容錯(cuò),回溯消費(fèi))
????????消息無(wú)buffer就不用擔(dān)心buffer回滿的情況,rocketmq的所有消息都是持久化的,生產(chǎn)者本身可以進(jìn)行錯(cuò)誤重試,發(fā)布者也會(huì)按照時(shí)間階梯的方式進(jìn)行消息重發(fā),消息回溯說(shuō)的是可以按照指定的時(shí)間進(jìn)行消息的重新消費(fèi),既可以向前也可以向后(前提條件是要注意消息的擦除時(shí)間)
海量消息堆積能力,消息堆積后,寫(xiě)入低延遲
????????針對(duì)于provider需要配合部署方式,對(duì)于consumer,如果是集群方式一旦master返現(xiàn)消息堆積會(huì)向consumer下發(fā)一個(gè)重定向指令,此時(shí)consumer就可以從slave進(jìn)行數(shù)據(jù)消費(fèi)了
分布式事務(wù)
????????我個(gè)人感覺(jué)rocketmq對(duì)這一塊說(shuō)的不是很清晰,而且官方也說(shuō)現(xiàn)在這塊存在缺陷(會(huì)令系統(tǒng)pagecache過(guò)多),所以線上建議還是少用為好
消息失敗重試機(jī)制
????????針對(duì)provider的重試,當(dāng)消息發(fā)送到選定的broker時(shí)如果出現(xiàn)失敗會(huì)自動(dòng)選擇其他的broker進(jìn)行重發(fā),默認(rèn)重試三次,當(dāng)然重試次數(shù)要在消息發(fā)送的超時(shí)時(shí)間范圍內(nèi)。
????????針對(duì)consumer的重試,如果消息因?yàn)楦鞣N原因沒(méi)有消費(fèi)成功,會(huì)自動(dòng)加入到重試隊(duì)列,一般情況如果是因?yàn)榫W(wǎng)絡(luò)等問(wèn)題連續(xù)重試也是照樣失敗,所以rocketmq也是采用階梯重試的方式。
定時(shí)消費(fèi)
? ? ? ? 除了上面的配置,在發(fā)送消息是也可以針對(duì)message設(shè)置setDelayTimeLevel
活躍的開(kāi)源社區(qū)
????????現(xiàn)在rocketmq成為了apache的一款開(kāi)源產(chǎn)品,活躍度也是不容懷疑的
成熟度(經(jīng)過(guò)雙十一考驗(yàn))
????????針對(duì)本身的成熟度,我們看看這么多年的雙十一就可想而知了
相關(guān)概念
NameServer
這里我們可以理解成類(lèi)似于zk的一個(gè)注冊(cè)中心,而且rocketmq最初也是基于zk作為注冊(cè)中心的,現(xiàn)在相當(dāng)于為rocketmq自定義了一個(gè)注冊(cè)中心,代碼不超過(guò)1000行。RocketMQ 有多種配置方式可以令客戶端找到 Name Server, 然后通過(guò) Name Server 再找到 Broker,分別如下,優(yōu)先級(jí)由高到低,高優(yōu)先級(jí)會(huì)覆蓋低優(yōu)先級(jí)??蛻舳颂峁﹉ttp和ip:端口號(hào)的兩種方式,推薦使用http的方式可以實(shí)現(xiàn)nameserver的熱部署。
Push Consumer
? ? ? ? Consumer 的一種,應(yīng)用通常通過(guò) Consumer 對(duì)象注冊(cè)一個(gè) Listener 接口,一旦收到消息,Consumer 對(duì)象立刻回調(diào) Listener 接口方法,類(lèi)似于activemq的方式
Pull Consume
? ? ? ? Consumer 的一種,應(yīng)用通常主動(dòng)調(diào)用 Consumer 的拉消息方法從 Broker 拉消息,主動(dòng)權(quán)由應(yīng)用控制
Producer Group
? ? ? ? 一類(lèi)producer的集合名稱(chēng),這類(lèi)producer通常發(fā)送一類(lèi)消息,且發(fā)送邏輯一致
Consumer Group
? ? ? ? 同上,consumer的集合名稱(chēng)
Broker
? ? ? ? 消息中轉(zhuǎn)的角色,負(fù)責(zé)存儲(chǔ)消息(實(shí)際的存儲(chǔ)是調(diào)用的store組件完成的),轉(zhuǎn)發(fā)消息,一般也成為server,同jms中的provider
Message Filter
? ? ? ? 可以實(shí)現(xiàn)高級(jí)的自定義的消息過(guò)濾
Master/Slave
? ? ? ? 集群的主從關(guān)系,broker的name相同,brokerid=0的為主master,大于0的為從slave,可以一主多從,但一從只能有一主
RocketMQ角色介紹
RocketMQ由四部分構(gòu)成:Producer、Consumer、Broker和NameServer
啟動(dòng)順序:NameServer->Broker
為了消除單點(diǎn)故障,增加可靠性或增大吞吐量,可以在多臺(tái)機(jī)器上部署多個(gè)nameserver和broker,并且為每個(gè)broker部署1個(gè)或多個(gè)slave,rocketmq架構(gòu)圖如圖1.1所示。

Topic & message queue:一個(gè)分布式消息隊(duì)列中間件部署好以后,可以給很多個(gè)業(yè)務(wù)提供服務(wù),同一個(gè)業(yè)務(wù)也有不同類(lèi)型的消息要投遞,這些不同類(lèi)型的消息以不同的 Topic 名稱(chēng)來(lái)區(qū)分。所以發(fā)送和接收消息前,先創(chuàng)建topic,針對(duì)某個(gè) Topic 發(fā)送和接收消息。有了 Topic 以后,還需要解決性能問(wèn)題 。 如果一個(gè)Topic 要發(fā)送和接收的數(shù)據(jù)量非常大, 需要能支持增加并行處理的機(jī)器來(lái)提高處理速度,這時(shí)候一個(gè) Topic 可以根據(jù)需求設(shè)置一個(gè)或多個(gè) Message Queue, Message Queue 類(lèi)似分區(qū)或 Partition 。Topic有了多個(gè) Message Queue 后,消息可以并行地向各個(gè)Message Queue 發(fā)送,消費(fèi)者也可以并行地從多個(gè) Message Queue 讀取消息并消費(fèi) 。
集群部署方式
單Master模式
????????只有一個(gè) Master節(jié)點(diǎn)
????????優(yōu)點(diǎn):配置簡(jiǎn)單,方便部署
????????缺點(diǎn):這種方式風(fēng)險(xiǎn)較大,一旦Broker重啟或者宕機(jī)時(shí),會(huì)導(dǎo)致整個(gè)服務(wù)不可用,不建議線上環(huán)境使用
多Master模式
????????一個(gè)集群無(wú) Slave,全是 Master,例如 2 個(gè) Master 或者 3 個(gè) Master
????????優(yōu)點(diǎn):配置簡(jiǎn)單,單個(gè)Master 宕機(jī)或重啟維護(hù)對(duì)應(yīng)用無(wú)影響,在磁盤(pán)配置為RAID10 時(shí),即使機(jī)器宕機(jī)不可恢復(fù)情況下,由與 RAID10磁盤(pán)非??煽?,消息也不會(huì)丟(異步刷盤(pán)丟失少量消息,同步刷盤(pán)一條不丟)。性能最高。多 Master 多 Slave 模式,異步復(fù)制
????????缺點(diǎn):?jiǎn)闻_(tái)機(jī)器宕機(jī)期間,這臺(tái)機(jī)器上未被消費(fèi)的消息在機(jī)器恢復(fù)之前不可訂閱,消息實(shí)時(shí)性會(huì)受到受到影響
多Master多Slave模式(異步復(fù)制)---本文稍后以這種方式部署集群為例
? ? ? ? 每個(gè) Master 配置一個(gè) Slave,有多對(duì)Master-Slave, HA,采用異步復(fù)制方式,主備有短暫消息延遲,毫秒級(jí)。
????????優(yōu)點(diǎn):即使磁盤(pán)損壞,消息丟失的非常少,且消息實(shí)時(shí)性不會(huì)受影響,因?yàn)镸aster 宕機(jī)后,消費(fèi)者仍然可以從 Slave消費(fèi),此過(guò)程對(duì)應(yīng)用透明。不需要人工干預(yù)。性能同多 Master 模式幾乎一樣。
????????缺點(diǎn): Master 宕機(jī),磁盤(pán)損壞情況,會(huì)丟失少量消息。
多Master多Slave模式(同步雙寫(xiě))---文中會(huì)說(shuō)明補(bǔ)充此集群配置,線上使用的話,推薦使用此模式集群
? ? ? ? 每個(gè) Master 配置一個(gè) Slave,有多對(duì)Master-Slave, HA采用同步雙寫(xiě)方式,主備都寫(xiě)成功,向應(yīng)用返回成功。
????????優(yōu)點(diǎn):數(shù)據(jù)與服務(wù)都無(wú)單點(diǎn), Master宕機(jī)情況下,消息無(wú)延遲,服務(wù)可用性與數(shù)據(jù)可用性都非常高
????????缺點(diǎn):性能比異步復(fù)制模式略低,大約低 10%左右,發(fā)送單個(gè)消息的 RT會(huì)略高。目前主宕機(jī)后,備機(jī)不能自動(dòng)切換為主機(jī),后續(xù)會(huì)支持自動(dòng)切換功能
Rocketmq雙主從異步復(fù)制集群部署(文中包含同步雙寫(xiě)集群的配置說(shuō)明)
一、預(yù)裝環(huán)境:
rhel 6.9(其實(shí)redhat & centos 6~7都是通用的)
jdk-1.8
git,maven(非必須)
二、集群結(jié)構(gòu):

三、下載解壓
下載地址:http://mirror.bit.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip
mkdir -p?/opt/apps_install/rocketmq-4.2.0
cd?/opt/apps_install/rocketmq-4.2.0
unzip?rocketmq-all-4.2.0-bin-release.zip
ln -s /opt/apps_install/rocketmq-4.2.0 /opt/apps/rocketmq
四、創(chuàng)建存儲(chǔ)路徑
10.16.13.90(rocketmq-nameserver-1):
mkdir -p /data/rocketmq/store/{rootdir-a-m,commitlog-a-m,rootdir-b-s,commitlog-b-s}
10.16.13.91(rocketmq-nameserver-2):
mkdir -p /data/rocketmq/store/{rootdir-b-m,commitlog-b-m,rootdir-a-s,commitlog-a-s}
五、配置hosts和環(huán)境變量
兩臺(tái)服務(wù)器修改/etc/hosts,加入下面兩行
10.16.13.90 rocketmq-nameserver-1
10.16.13.91 rocketmq-nameserver-2
修改/etc/profile,加入
export ROCKETMQ_HOME=/opt/apps/rocketmq
export PATH=$ROCKETMQ_HOME/bin:$PATH
source /etc/profile
六、修改配置文件
國(guó)際慣例,修改之前先備份~以防意外
cd?/opt/apps/rocketmq;cp -r conf/ conf.default/
因?yàn)楸疚牟捎秒p主雙從異步復(fù)制,默認(rèn)的rocketmq已經(jīng)為我們配置了相應(yīng)配置目錄
cd?/opt/apps/rocketmq/conf/2m-2s-async
10.16.13.90 rocketmq-nameserver-1 ? ? ?角色:broker-a-master & broker-b-slave
vim?broker-a.properties
#所屬集群名字
brokerClusterName=sns-rocket-mq-cluster
#broker名字,注意此處不同的配置文件填寫(xiě)的不一樣
brokerName=rocketmq-nameserver-1
#brokerId 0 表示 Master,>0 表示 Slave
brokerId=0
# Broker 對(duì)外服務(wù)的監(jiān)聽(tīng)端口
listenPort=10911
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-nameserver-1:9876;rocketmq-nameserver-2:9876
# 刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=72
#Broker role有3種:SYNC MASTER、ASYNC MASTER、SLAVE。關(guān)鍵詞SYNC和ASYNC表示Master和Slave之間同步消息的機(jī)制,SYNC即同步更新,指當(dāng)Slave和Master消息同步完成后,再返回發(fā)送成功的狀態(tài)。ASYNC即異步更新,master與slave有短暫消息延遲,毫秒級(jí)。本文在此使用了異步復(fù)制集群模式,線上環(huán)境推薦使用同步雙寫(xiě)模式,即SYNC_MASTER
brokerRole=ASYNC_MASTER
# 刷盤(pán)方式 ASYNC_FLUSH 異步刷盤(pán)
flushDiskType=ASYNC_FLUSH
#存儲(chǔ)路徑
storePathRootDir=/data/rocketmq/store/rootdir-a-m
storePathCommitLog=/data/rocketmq/store/commitlog-a-m
# 是否允許 Broker 自動(dòng)創(chuàng)建Topic
autoCreateTopicEnable=true
# 是否允許 Broker 自動(dòng)創(chuàng)建訂閱組
autoCreateSubscriptionGroup=true
vim?broker-b-s.properties
brokerClusterName=sns-rocket-mq-cluster
brokerName=rocketmq-nameserver-2
listenPort=10921
namesrvAddr=rocketmq-nameserver-1:9876;rocketmq-nameserver-2:9876
brokerId=1
deleteWhen=04
fileReservedTime=72
brokerRole=SLAVE
storePathRootDir=/data/rocketmq/store/rootdir-b-s
storePathCommitLog=/data/rocketmq/store/commitlog-b-s
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
flushDiskType=ASYNC_FLUSH
10.16.13.91 rocketmq-nameserver-2 ? ? ?角色:broker-b-master & broker-a-slave
vim?broker-b.properties
brokerClusterName=sns-rocket-mq-cluster
brokerName=rocketmq-nameserver-2
brokerIP1=10.16.13.91
brokerId=0
listenPort=10911
namesrvAddr=rocketmq-nameserver-1:9876;rocketmq-nameserver-2:9876
deleteWhen=04
fileReservedTime=72
##?Broker role有3種:SYNC MASTER、ASYNC MASTER、SLAVE。關(guān)鍵詞SYNC和ASYNC表示Master和Slave之間同步消息的機(jī)制,SYNC即同步更新,指當(dāng)Slave和Master消息同步完成后,再返回發(fā)送成功的狀態(tài)。ASYNC即異步更新,master與slave有短暫消息延遲,毫秒級(jí)。本文在此使用了異步復(fù)制集群模式ASYNC_MASTER,線上環(huán)境推薦使用同步雙寫(xiě)模式,即SYNC_MASTER。
brokerRole=ASYNC_MASTER
storePathRootDir=/data/rocketmq/store/rootdir-b-m
storePathCommitLog=/data/rocketmq/store/commitlog-b-m
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
flushDiskType=ASYNC_FLUSH
vim?broker-a-s.properties
brokerClusterName=sns-rocket-mq-cluster
brokerName=rocketmq-nameserver-1
listenPort=10921
namesrvAddr=rocketmq-nameserver-1:9876;rocketmq-nameserver-2:9876
brokerId=1
deleteWhen=04
fileReservedTime=72
brokerRole=SLAVE
storePathRootDir=/data/rocketmq/store/rootdir-a-s
storePathCommitLog=/data/rocketmq/store/commitlog-a-s
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
flushDiskType=ASYNC_FLUSH
修改日志配置文件(兩臺(tái)一樣)
mkdir -p?/opt/apps/rocketmq/logs
cd /opt/apps/rocketmq/conf
sed -i 's#${user.home}#/opt/apps/rocketmq#g' *.xml
七、修改啟動(dòng)腳本參數(shù)
繼續(xù)國(guó)際慣例,修改之前先備份,兩臺(tái)服務(wù)器相同操作
cd??/opt/apps/rocketmq/bin
cp?runbroker.sh?runbroker.sh.default
調(diào)一下JVM,包括nameserver 和 broker。限于自己機(jī)器的配置,參數(shù)調(diào)小一下。但Rocketmq最少的堆是1g,否則無(wú)法啟動(dòng)。兩臺(tái)機(jī)器執(zhí)行相同的操作。
JAVA_OPT="${JAVA_OPT} -server -Xms16g -Xmx16g -Xmn8g -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1g"
八、服務(wù)啟動(dòng)
要先啟動(dòng)namerserver,再啟broker,兩臺(tái)機(jī)器執(zhí)行相同的操作。
這里為了未來(lái)方便運(yùn)維,最好是寫(xiě)好相應(yīng)的服務(wù)啟動(dòng)腳本,養(yǎng)成一個(gè)好習(xí)慣比擁有一個(gè)好記性更友愛(ài)不是么~
① 啟動(dòng)nameserver,兩臺(tái)機(jī)器操作相同
mkdir -p?/opt/scripts/rocketmq
cd?/opt/scripts/rocketmq
vim?start_rocketmq_nameserver.sh
#!/bin/bash
source /etc/profile
nohup sh /opt/apps/rocketmq/bin/mqnamesrv > /data/rocketmq/store/mqnamesrv.log 2>&1 &
② 啟動(dòng)broker。當(dāng)然兩臺(tái)機(jī)器不一樣,這里一個(gè)一個(gè)來(lái)
10.16.13.90 rocketmq-nameserver-1
vim?start_broker_a_master.sh
#!/bin/bash
nohup sh /opt/apps/rocketmq/bin/mqbroker -c /opt/apps/rocketmq/conf/2m-2s-async/broker-a.properties > /data/rocketmq/store/broker-a-m.log 2>&1 &
vim?start_broker_b_slave.sh
#!/bin/bash
nohup sh /opt/apps/rocketmq/bin/mqbroker -c /opt/apps/rocketmq/conf/2m-2s-async/broker-b-s.properties > /data/rocketmq/store/broker-b-s.log 2>&1 &
10.16.13.91 rocketmq-nameserver-2
vim?start_broker_b_master.sh
#!/bin/bash
nohup sh /opt/apps/rocketmq/bin/mqbroker -c /opt/apps/rocketmq/conf/2m-2s-async/broker-b.properties > /data/rocketmq/store/broker-b-m.log 2>&1 &
vim?start_broker_a_slave.sh
#!/bin/bash
nohup sh /opt/apps/rocketmq/bin/mqbroker -c /opt/apps/rocketmq/conf/2m-2s-async/broker-a-s.properties > /data/rocketmq/store/broker-a-s.log 2>&1 &
這里再啰嗦一遍,先啟動(dòng)nameserver,再啟動(dòng)broker,兩臺(tái)機(jī)器的啟動(dòng)順序:?jiǎn)?dòng)nameserver---啟動(dòng)broker master---啟動(dòng)broker slave,done
都啟動(dòng)完畢之后可以jps看一下
[@bx_13_90 /opt/scripts/rocketmq]# jps
60161 BrokerStartup
147505 Jps
59300 NamesrvStartup
60760 rocketmq-console-ng-1.0.0.jar
124248 BrokerStartup
查看服務(wù)啟動(dòng)后的機(jī)器狀態(tài):
[@bx_13_90 /opt/scripts/rocketmq]# mqadmin clusterList --namesrvAddr=10.16.13.90:9876
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
#Cluster Name? ? #Broker Name? ? ? ? ? ? #BID? #Addr? ? ? ? ? ? ? ? ? #Version? ? ? ? ? ? ? ? #InTPS(LOAD)? ? ? #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
sns-rocket-mq-cluster? rocketmq-nameserver-1? 0? ? 10.16.13.90:10911? ? ? V4_2_0_SNAPSHOT? ? ? ? ? 0.00(0,0ms)? ? ? ? 0.00(0,0ms)? ? ? ? ? 0 425360.18 0.0000
sns-rocket-mq-cluster? rocketmq-nameserver-1? 1? ? 10.16.13.91:10921? ? ? V4_2_0_SNAPSHOT? ? ? ? ? 0.00(0,0ms)? ? ? ? 0.00(0,0ms)? ? ? ? ? 0 425360.18 0.0000
sns-rocket-mq-cluster? rocketmq-nameserver-2? 0? ? 10.16.13.91:10911? ? ? V4_2_0_SNAPSHOT? ? ? ? ? 0.00(0,0ms)? ? ? ? 0.00(0,0ms)? ? ? ? ? 0 425360.18 0.0000
sns-rocket-mq-cluster? rocketmq-nameserver-2? 1? ? 10.16.13.90:10921? ? ? V4_2_0_SNAPSHOT? ? ? ? ? 0.00(0,0ms)? ? ? ? 0.00(0,0ms)? ? ? ? ? 0 425360.18 0.0000
九、服務(wù)關(guān)閉
關(guān)閉nameserver:
/opt/apps/rocketmq/bin/mqshutdown namesrv
關(guān)閉broker:
/opt/apps/rocketmq/bin/mqshutdown broker
十、部署rocketmq-console

部分開(kāi)了天眼的童鞋可能看到上面jps時(shí),有一個(gè)rocketmq-console-ng-1.0.0.jar,這里就具體說(shuō)一下rocketmq的管控臺(tái),可以隨時(shí)觀測(cè)和修改rocketmq的狀態(tài)和一些配置
這個(gè)管控臺(tái)在GitHub上也有項(xiàng)目,GitHub地址:https://github.com/apache/rocketmq-externals,再次感謝國(guó)際開(kāi)源組織gay站的無(wú)私貢獻(xiàn),讓眾基可以做伸手黨,而且現(xiàn)在管控臺(tái)還能顯示簡(jiǎn)體中文了~具體的介紹GitHub上有說(shuō),這里限于篇幅就不多啰嗦了
步入正題,如何部署rocketmq管控臺(tái)
這里還是福利一波吧,不用看GitHub如何編譯部署blablabla,筆者直接送上編譯好的jar包,綠色無(wú)毒請(qǐng)大家安心下載,如果鏈接有問(wèn)題不能下載,可以發(fā)我郵件向我要(fantasymango@163.com)
鏈接: https://pan.baidu.com/s/1Y4fzVc2r30jtIVpvYZocWA 密碼: vj2y
mkdir -p?/opt/apps_install/rocketmq-console/
把下載好的jar包放在這里
啟動(dòng)腳本start.sh
#!/bin/bash
nohup java -jar ./rocketmq-console-ng-1.0.0.jar --server.port=8080 --rocketmq.config.namesrvAddr=10.16.13.90:9876;10.16.13.91:9876 &
訪問(wèn)ip:8080即可
Tips:
Broker 重啟對(duì)客戶端的影響
Broker 重啟可能會(huì)導(dǎo)致正在發(fā)往這臺(tái)機(jī)器的的消息發(fā)送失敗,RocketMQ提供了一種優(yōu)雅關(guān)閉Broker的方法,通過(guò)執(zhí)行以下命令會(huì)清除Broker的寫(xiě)權(quán)限,過(guò)40s后,所有客戶端都會(huì)更新Broker路由信息,此時(shí)再關(guān)閉Broker就不會(huì)發(fā)生發(fā)送消息失敗的情況,因?yàn)樗邢⒍及l(fā)往了其他 Broker。
# sh mqadmin wipeWritePerm -b brokerName -n namesrvAddr
Master 與Slave的關(guān)系
RocketMQ的開(kāi)源版本,Master宕機(jī),Slave不能切換為Master,這里的Slave不可寫(xiě),但可讀,類(lèi)似于 Mysql 主備方式。