消息中間件rabbitmq(1)
阿新 • • 發佈:2018-12-03
發送 綁定 進行 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這個規則就是模糊匹配,可以通過通配符滿足一部分規則就可以傳送。它的約定是:
- routing key為一個句點號“. ”分隔的字符串(我們將被句點號“. ”分隔開的每一段獨立的字符串稱為一個單詞),如“stock.usd.nyse”、“nyse.vmw”、“quick.orange.rabbit”
- binding key與routing key一樣也是句點號“. ”分隔的字符串
- binding key中可以存在兩種特殊字符“*”與“#”,用於做模糊匹配,其中“*”用於匹配一個單詞,“#”用於匹配多個單詞(可以是零個)
類型名稱 | 類型描述 |
fanout | 把所有發送到該Exchange的消息路由到所有與它綁定的Queue中 |
direct | Routing Key==Binding Key |
topic | 我這裏自己總結的簡稱模糊匹配 |
headers | Exchange不依賴於routing key與binding key的匹配規則來路由消息,而是根據發送的消息內容中的headers屬性進行匹配。 |
消息中間件rabbitmq(1)