RocketMQ介紹及集群部署

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所示。

圖1.1 Rcoketmq各角色之間關(guān)系

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 主備方式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容