RabbitMQ交換機類型

一、Direct交換機:轉發消息到routingKey指定隊列(徹底匹配,單播)。

routingKey與隊列名徹底匹配,若是一個隊列綁定到交換機要求路由鍵爲「dog」,則只轉發routingkey標記爲dog的消息,不會轉發dog.puppy,也不會轉發dog.guard等。 spa


二、Topic交換機:按規則轉發消息(最靈活,組播)

 Topic類型交換機經過模式匹配分配消息的routing-key屬性。將路由鍵和某個模式進行匹配,此時隊列須要綁定到一個模式上。 server

它將routing-key和binding-key的字符串切分紅單詞。這些單詞之間用點隔開。它一樣也會識別兩個通配符:符號「#」和符號「*」。#匹配0個或多個單詞,*匹配很少很多一個單詞。 隊列

例如,binding key:*.stock.#匹配routing key: usd.stock和eur.stock.db,可是不匹配stock.nana。 路由

例如,「audit.#」可以匹配到「audit.irs.corporate」,可是「audit.*」只會匹配到「audit.irs」。 字符串


三、Fanout交換機:轉發消息到全部綁定隊列(最快,廣播)

fanout交換機不處理路由鍵,簡單的將隊列綁定到交換機上,每一個發送到交換機的消息都會被轉發到與該交換機綁定的全部隊列上。 it

很像子網廣播,每臺子網內的主機都得到了一份複製的消息。Fanout交換機轉發消息是最快的。 命名


四、Note

  • 若是沒有隊列綁定在交換機上,則發送到該交換機上的消息會丟失。
  • 一個交換機能夠綁定多個隊列,一個隊列能夠被多個交換機綁定。
  • 還有一些其餘類型的交換機類型,如header、failover、system等,如今在當前的RabbitMQ版本中均未實現。
  • 由於交換機是命名實體,聲明一個已經存在的交換機,可是試圖賦予不一樣類型是會致使錯誤。客戶端須要刪除這個已經存在的交換機,而後從新聲明而且賦予新的類型。
  • 交換機的屬性:
    • 持久性:若是啓用,交換機將會在server重啓前都有效。
    • 自動刪除:若是啓用,那麼交換機將會在其綁定的隊列都被刪掉以後刪除自身。
    • 惰性:若是沒有聲明交換機,那麼在執行到使用的時候會致使異常,並不會主動聲明。
相關文章
相關標籤/搜索