1. 程式人生 > >消息中間件rabbitmq(1)

消息中間件rabbitmq(1)

發送 綁定 進行 pro bind 點號 dir 分享 tin

介紹

技術分享圖片

註:沒有註冊中心,總共只分為三個角色,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屬性進行匹配。

消息中間件rabbitmq(1)