名詞解釋
本文主要對(duì)云消息隊(duì)列 RabbitMQ 版涉及的專有名詞及術(shù)語進(jìn)行定義和解析,方便您更好地理解相關(guān)概念并使用云消息隊(duì)列 RabbitMQ 版。
A
Alternate Exchange
備份Exchange,簡(jiǎn)稱AE,用于接收配置了備份Exchange的Exchange路由失敗的消息。
Arguments
Queue的參數(shù),可用于設(shè)置死信Exchange、消息過期時(shí)間、死信Routing key等。
Auto Delete
自動(dòng)刪除屬性,對(duì)于設(shè)置了自動(dòng)刪除的Exchange,如果綁定到該Exchange的最后一個(gè)Queue解除綁定,那么該Exchange將會(huì)自動(dòng)刪除。對(duì)于設(shè)置了自動(dòng)刪除的Queue,如果訂閱該Queue的最后一個(gè)消費(fèi)端取消訂閱后,那么該Queue將會(huì)自動(dòng)刪除。
B
Binding
一套綁定規(guī)則,用于告訴Exchange消息應(yīng)該被存儲(chǔ)到哪個(gè)Queue。它的作用是把Exchange和Queue按照路由規(guī)則綁定起來。
C
Channel
在客戶端的每個(gè)物理TCP連接里,可建立多個(gè)Channel,每個(gè)Channel代表一個(gè)會(huì)話任務(wù)。具體信息,請(qǐng)參見Connection和Channel。
Connection
TCP連接,生產(chǎn)者或消費(fèi)者與云消息隊(duì)列 RabbitMQ 版間的物理TCP連接。具體信息,請(qǐng)參見Connection和Channel。
E
Exchange
生產(chǎn)者將消息發(fā)送到Exchange,由Exchange將消息路由到一個(gè)或多個(gè)Queue中。Exchange根據(jù)消息的屬性或內(nèi)容路由消息。具體信息,請(qǐng)參見Exchange。
I
Internal
內(nèi)建類型,該類型的Exchange用于Exchange之間的綁定。
M
Message ID
Message ID(消息標(biāo)識(shí)符)是消息的可選屬性,類型為short string。Message ID在業(yè)務(wù)上通常被設(shè)置為唯一,適用于追蹤和識(shí)別銷售單、工單等需要保證消息唯一的場(chǎng)景。云消息隊(duì)列 RabbitMQ 版服務(wù)端不會(huì)對(duì)消息進(jìn)行冪等處理。如需實(shí)現(xiàn)消息冪等,即如果消息重試多次,消費(fèi)端對(duì)該重復(fù)消息消費(fèi)多次與消費(fèi)一次的結(jié)果是相同的,并且多次消費(fèi)沒有對(duì)系統(tǒng)產(chǎn)生副作用,在為每條消息設(shè)置唯一Message ID的基礎(chǔ)上,您還需要在云消息隊(duì)列 RabbitMQ 版的Consumer客戶端對(duì)消息進(jìn)行冪等處理,具體信息,請(qǐng)參見消息冪等。
Q
Queue
消息隊(duì)列,每個(gè)消息都會(huì)被投入到一個(gè)或多個(gè)Queue里。
R
Routing Key
生產(chǎn)者在向Exchange發(fā)送消息時(shí),需要指定一個(gè)Routing Key來設(shè)定該消息的路由規(guī)則。 Routing Key需要與Exchange類型聯(lián)合使用才能生效。一般情況下,生產(chǎn)者在向Exchange發(fā)送消息時(shí),可以通過指定Routing Key來決定消息被路由到哪個(gè)或哪些Queue。
S
實(shí)例
一個(gè)獨(dú)立的云消息隊(duì)列 RabbitMQ 版資源實(shí)體,包含Vhost、Exchange、Queue等基本的資源要素。
實(shí)例限流
當(dāng)云消息隊(duì)列 RabbitMQ 版實(shí)例的TPS流量峰值超過您所購買實(shí)例的TPS規(guī)格上限時(shí),云消息隊(duì)列 RabbitMQ 版實(shí)例會(huì)被限流。
限流后的行為如下:
云消息隊(duì)列 RabbitMQ 版服務(wù)端會(huì)返回錯(cuò)誤碼信息。
云消息隊(duì)列 RabbitMQ 版服務(wù)端關(guān)閉當(dāng)前請(qǐng)求的Channel。代碼中可以捕獲異常重新開啟Channel。
具體信息,請(qǐng)參見實(shí)例限流最佳實(shí)踐。
生產(chǎn)者
消息生產(chǎn)者,即投遞消息的程序。
死信Exchange
用于路由死信消息的Exchange。死信Exchange會(huì)根據(jù)死信Routing Key、Header屬性將死信消息投遞至死信Queue。死信Exchange可以是任何一種常見類型的Exchange,例如Direct Exchange,具體信息,請(qǐng)參見死信Exchange。
死信Routing Key
死信消息的路由規(guī)則。如果不設(shè)置死信消息的Routing Key,則死信消息的Routing Key默認(rèn)為消息本身的Routing Key。
死信消息
被重新發(fā)送到死信Exchange的消息。消息變成死信消息的可能原因如下:
requeue參數(shù)被設(shè)置為 false,消費(fèi)者使用
basic.reject
或basic.nack
否定應(yīng)答(NACK)消息。消息重試次數(shù)超過16次,消息重試失敗。具體信息,請(qǐng)參見消息超時(shí)和重試機(jī)制。
消息過期,即消息在Queue中存在的時(shí)間超過了設(shè)置的消息存活時(shí)間。具體信息,請(qǐng)參見消息存活時(shí)間。
死信Queue
死信Exchange綁定的Queue,用于存儲(chǔ)死信消息。
V
Vhost
虛擬主機(jī)(Virtual Host),用作邏輯隔離,分別管理各自的Exchange、Queue和Binding,使得應(yīng)用安全地運(yùn)行在不同的Vhost實(shí)例上,相互之間不會(huì)干擾。一個(gè)實(shí)例下可以有多個(gè)Vhost,一個(gè)Vhost里面可以有若干個(gè)Exchange和Queue。生產(chǎn)者和消費(fèi)者連接云消息隊(duì)列 RabbitMQ 版需要指定一個(gè)Vhost。
X
消費(fèi)者
消息消費(fèi)者,即接收消息的程序。
消息存活時(shí)間
消息在Queue中的有效期。某條消息在Queue中的留存時(shí)間超過配置的消息存活時(shí)間時(shí),則該消息過期。消息存活時(shí)間的值必須為非負(fù)整型數(shù),單位為毫秒。例如,某條消息的存活時(shí)間的值是1000,則代表該消息最多會(huì)在Queue中存活1秒。具體信息,請(qǐng)參見消息存活時(shí)間。
Y
延時(shí)消息
生產(chǎn)者將消息發(fā)送到云消息隊(duì)列 RabbitMQ 版服務(wù)端,但并不期望這條消息立馬投遞,而是延遲一定時(shí)間后才投遞到消費(fèi)者進(jìn)行消費(fèi),該消息即延時(shí)消息。具體信息,請(qǐng)參見延時(shí)消息。
永久性
在服務(wù)器重啟之后Queue、Exchange以及相應(yīng)Binding仍然存在的現(xiàn)象。