RabbitMQ 关键词解释
源地址:?https://www.cnblogs.com/hz04022016/p/6518138.html
RabbitMQ是流行的開源消息隊(duì)列系統(tǒng),用erlang語言開發(fā)。RabbitMQ是AMQP(高級(jí)消息隊(duì)列協(xié)議)的標(biāo)準(zhǔn)實(shí)現(xiàn)。
RabbitMQ中間件分為服務(wù)端(RabbitMQ Server)和客戶端(RabbitMQ Client),服務(wù)端可以理解為是一個(gè)消息的代理消費(fèi)者,客戶端又分為消息生產(chǎn)者(Producer)和消息消費(fèi)者(Consumer)。
1、消息生產(chǎn)者(Producer):主要生產(chǎn)消息并將消息基于TCP協(xié)議,通過建立Connection和Channel,將消息傳輸給RabbitMQ Server,對(duì)于Producer而言基本就完成了工作。
2、服務(wù)端(RabbitMQ Server):主要負(fù)責(zé)處理消息路由、分發(fā)、入隊(duì)列、緩存和出列。主要由三部分組成:Exchange、RoutingKey、Queue。
?(1)Exchange:用于接收消息生產(chǎn)者發(fā)送的消息,有三種類型的exchange:direct, fanout,topic,不同類型實(shí)現(xiàn)了不同的路由算法;
A.?direct exchange:將與routing key 比配的消息,直接推入相對(duì)應(yīng)的隊(duì)列,創(chuàng)建隊(duì)列時(shí),默認(rèn)就創(chuàng)建同名的routing key。
B.?fanout exchange:是一種廣播模式,忽略routingkey的規(guī)則。
C.?topic exchange:應(yīng)用主題,根據(jù)key進(jìn)行模式匹配路由,例如:若為abc*則推入到所有abc*相對(duì)應(yīng)的queue;若為abc.#則推入到abc.xx.one ,abc.yy.two對(duì)應(yīng)的queue。
?(2)RoutingKey:是RabbitMQ實(shí)現(xiàn)路由分發(fā)到各個(gè)隊(duì)列的規(guī)則,并結(jié)合Binging提供于Exchange使用將消息推送入隊(duì)列;
?(3)Queue:是消息隊(duì)列,可以根據(jù)需要定義多個(gè)隊(duì)列,設(shè)置隊(duì)列的屬性,比如:消息移除、消息緩存、回調(diào)機(jī)制等設(shè)置,實(shí)現(xiàn)與Consumer通信;
3、消息消費(fèi)者(Consumer):主要負(fù)責(zé)消費(fèi)Queue的消息,同樣基于TCP協(xié)議,通過建立Connection和Channel與Queue傳輸消息,一個(gè)消息可以給多個(gè)Consumer消費(fèi);
4、關(guān)鍵名詞說明:
Publisher:
? ? ? ? ? 是Message的生產(chǎn)者,Publisher這個(gè)Clients產(chǎn)生了一些Message。
Consumer:
? ? ? ? ? Message的消費(fèi)者,Publisher產(chǎn)生的Message,最終要到達(dá)Consumer這個(gè)Clients,進(jìn)行消費(fèi)。
Exchange:
? ? ? ? ?指定消息按什么規(guī)則,路由到哪個(gè)Queue,Message消息先要到達(dá)Exchange,在Server中承擔(dān)著從Produce接收Message的責(zé)任。
Queue:
? ? ? ? ?到達(dá)Exchange的消息,根據(jù)制定的規(guī)則(Routing key)到達(dá)對(duì)應(yīng)的Queue,在Server中承擔(dān)著裝載Message,是Message的容器,等待被消費(fèi)出去。
Routing key:
? ? ? ? ?在Exchange和Queue之間隱藏有一條黑線,可以將這條黑線看成是Routing key,Exchange就是根據(jù)這些定義好的Routing key將Message送到對(duì)應(yīng)的Queue中去,是Exchange和Queue之間的橋梁。
Broker:
? ? ? ? 之前一直不理解這個(gè)Broker,其實(shí)Broker就是接收和分發(fā)消息的應(yīng)用,也就是說RabbitMQ Server就是Message Broker。
VirtualHost:
? ? ? ? 虛擬主機(jī),一個(gè)Broker里可以開有多個(gè)VirtualHost,它的作用是用作不同用戶的權(quán)限分離。?
Connection:
? ? ? ?是Publisher/Consumer和Broker之間的TCP連接。斷開連接的操作只會(huì)在Publisher/Consumer端進(jìn)行,Broker不會(huì)斷開連接,除非出現(xiàn)網(wǎng)絡(luò)故障或者Broker服務(wù)出現(xiàn)問題,Broker服務(wù)宕了。
Connection: Channel:?
? ? ? ? 如果每一次訪問RabbitMQ就建立一個(gè)Connection,那在消息量大的時(shí)候建立TCP Connection的開銷就會(huì)很大,導(dǎo)致的后果就是效率低下。
轉(zhuǎn)載于:https://www.cnblogs.com/88phper/p/8329275.html
總結(jié)
以上是生活随笔為你收集整理的RabbitMQ 关键词解释的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 感动到流泪!数据分析师的福音:跨视图粒度
- 下一篇: Django 框架02: 模型与站点