【轉】RabbitMQ 關鍵詞

【轉】RabbitMQ 關鍵詞html

RabbitMQ是流行的開源消息隊列系統,用erlang語言開發。RabbitMQ是AMQP(高級消息隊列協議)的標準實現。算法

RabbitMQ中間件分爲服務端(RabbitMQ Server)和客戶端(RabbitMQ Client),服務端能夠理解爲是一個消息的代理消費者,客戶端又分爲消息生產者(Producer)和消息消費者(Consumer)。緩存

  一、消息生產者(Producer):主要生產消息並將消息基於TCP協議,經過創建Connection和Channel,將消息傳輸給RabbitMQ Server,對於Producer而言基本就完成了工做。網絡

  二、服務端(RabbitMQ Server):主要負責處理消息路由、分發、入隊列、緩存和出列。主要由三部分組成:Exchange、RoutingKey、Queue。代理

    (1)Exchange:用於接收消息生產者發送的消息,有三種類型的exchange:direct, fanout,topic,不一樣類型實現了不一樣的路由算法;htm

    A. direct exchange:將與routing key 比配的消息,直接推入相對應的隊列,建立隊列時,默認就建立同名的routing key。中間件

    B. fanout exchange:是一種廣播模式,忽略routingkey的規則。blog

    C. topic exchange:應用主題,根據key進行模式匹配路由,例如:若爲abc*則推入到全部abc*相對應的queue;若爲abc.#則推入到abc.xx.one ,abc.yy.two對應的queue。隊列

    (2)RoutingKey:是RabbitMQ實現路由分發到各個隊列的規則,並結合Binging提供於Exchange使用將消息推送入隊列;路由

    (3)Queue:是消息隊列,能夠根據須要定義多個隊列,設置隊列的屬性,好比:消息移除、消息緩存、回調機制等設置,實現與Consumer通訊;

  三、消息消費者(Consumer):主要負責消費Queue的消息,一樣基於TCP協議,經過創建Connection和Channel與Queue傳輸消息,一個消息能夠給多個Consumer消費;

  四、關鍵名詞說明:

  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的開銷就會很大,致使的後果就是效率低下。

相關文章
相關標籤/搜索