1. 程式人生 > >訊息中介軟體rabbitmq(1)

訊息中介軟體rabbitmq(1)

介紹

注:沒有註冊中心,總共只分為三個角色,product,server,customer。

Queue

訊息佇列,等同於rocketmq中的topic

Exchange

生產者產生的訊息並不是直接傳送給訊息佇列Queue的,而是要經過Exchange(交換器),由Exchange再將訊息路由到一個或多個Queue,當然這裡還會對不符合路由規則的訊息進行丟棄掉,這裡指的是後續要談到的Exchange Type。那麼Exchange是怎樣將訊息準確的推送到對應的Queue的呢?那麼這裡的功勞最大的當屬Binding,RabbitMQ是通過Binding將Exchange和Queue連結在一起,這樣Exchange就知道如何將訊息準確的推送到Queue中去。簡單示意圖如下所示:

主要介紹下Topic的路由規則

topic這個規則就是模糊匹配,可以通過萬用字元滿足一部分規則就可以傳送。它的約定是:

  1. routing key為一個句點號“. ”分隔的字串(我們將被句點號“. ”分隔開的每一段獨立的字串稱為一個單詞),如“stock.usd.nyse”、“nyse.vmw”、“quick.orange.rabbit”
  2. binding key與routing key一樣也是句點號“. ”分隔的字串
  3. binding key中可以存在兩種特殊字元“*”與“#”,用於做模糊匹配,其中“*”用於匹配一個單詞,“#”用於匹配多個單詞(可以是零個)
Exchange規則
型別名稱 型別描述
fanout 把所有傳送到該Exchange的訊息路由到所有與它繫結的Queue中
direct Routing Key==Binding Key
topic 我這裡自己總結的簡稱模糊匹配
headers Exchange不依賴於routing key與binding key的匹配規則來路由訊息,而是根據傳送的訊息內容中的headers屬性進行匹配。