快速入門
Broker:可以理解為消息隊(duì)列服務(wù)器的實(shí)體映屋,它是一個(gè)中間件應(yīng)用客峭,負(fù)責(zé)接收消息生產(chǎn)者的消息钦勘,然后將消息發(fā)送至消息接收者或者其他的Broker示血。
Exchange:消息交換機(jī)棋傍,是消息第一個(gè)到達(dá)的地方,消息通過它指定的路由規(guī)則难审,分發(fā)到不同的消息隊(duì)列中去瘫拣。
Queue:消息隊(duì)列,消息通過發(fā)送和路由之后最終到達(dá)的地方告喊,到達(dá)Queue的消息即進(jìn)入邏輯上等待消費(fèi)的狀態(tài)麸拄。每個(gè)消息都會(huì)被發(fā)送到一個(gè)多個(gè)隊(duì)列。
Binding:綁定黔姜,它的作用就是把Exchange和Queue按照路由規(guī)則綁定起來拢切,也就是Exchange和Queue之間的虛擬連接。
Routing Key:路由關(guān)鍵字秆吵,Exchange根據(jù)這個(gè)關(guān)鍵字進(jìn)行消息投遞淮椰。
Virtual host:虛擬主機(jī),它是對(duì)Broker的虛擬劃分,將消費(fèi)者主穗、生產(chǎn)者和它們依賴的AMQP相關(guān)結(jié)構(gòu)進(jìn)行隔離泻拦,一般都是為了安全考慮。比如忽媒,我們可以在一個(gè)Broker中設(shè)置多個(gè)虛擬主機(jī)争拐,對(duì)不同用戶進(jìn)行權(quán)限的分離。
Connection:連接晦雨,代表生產(chǎn)者架曹、消費(fèi)者、Broker之間進(jìn)行通信的物理網(wǎng)絡(luò)闹瞧。
Channel:消息通道绑雄,用于連接生產(chǎn)者和消費(fèi)者的邏輯結(jié)構(gòu)。在客戶端的每個(gè)連接里夹抗,可建立多個(gè)Channel绳慎,每個(gè)Channel代表一個(gè)會(huì)話任務(wù),通過Channel可以隔離同一連接中的不同交互內(nèi)容漠烧。
Producer:消息生產(chǎn)者杏愤,制造消息并發(fā)送消息的程序。
Consumer:消息消費(fèi)者已脓,接收消息并處理消息的程序珊楼。
消息投遞到隊(duì)列的過程
1.客戶端連接到消息隊(duì)列服務(wù)器,打開一個(gè)Channel度液。
2.客戶端聲明一個(gè)Exchange厕宗,并設(shè)置相關(guān)屬性。
3.客戶端聲明一個(gè)Queue堕担,并設(shè)置相關(guān)屬性已慢。
4.客戶端使用Routing Key,在Exchange和Queue之間建立好綁定關(guān)系霹购。
5.客戶端投遞消息到Exchange佑惠。
6.Exchange接收到消息后,根據(jù)消息的key和已經(jīng)設(shè)置的Binding齐疙,進(jìn)行消息路由膜楷,將消息投遞到一個(gè)或多個(gè)Queue里。
Exchange類型
1.Direct交換機(jī):完全根據(jù)key進(jìn)行投遞贞奋。比如赌厅,綁定時(shí)設(shè)置了Routing Key為abc,那么客戶端提交的消息轿塔,只有設(shè)置了Key為abc的才會(huì)被投遞到隊(duì)列特愿。
2.Topic交換機(jī):對(duì)key進(jìn)行模式匹配后進(jìn)行投遞仲墨,可以使用符號(hào)#匹配一個(gè)多個(gè)詞,符號(hào)匹配正好一個(gè)詞洽议。比如abc.#匹配abc.def.ghi宗收,acb.只匹配abc.def。
3.Fanout交換機(jī):不需要任何key亚兄,它采取廣播的模式,一個(gè)消息進(jìn)來時(shí)采驻,投遞到與該交換機(jī)綁定的所有隊(duì)列审胚。
消息隊(duì)列持久化
1.Exchange持久化,在聲明時(shí)指定durable => 1礼旅。
2.Queue 持久化膳叨,在聲明時(shí)指定durable => 1。
3.消息持久化痘系,在投遞時(shí)指定devivery_mode > =2 (1是非持久化)
如果Exchange和Queue 都是持久化的菲嘴,那么它們之間的Binding也是持久化的。如果Exchange和Queue 兩者之間有一個(gè)是持久化的汰翠,一個(gè)是非持久化的龄坪,就不允許建立連接。