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