1. 程式人生 > >rabbitmq系列四 之路由

rabbitmq系列四 之路由

hid 路由 消費 IE 控制臺 lose 空間 ora 分享

1、路由

  在上一個的教程中,我們構建了一個簡單的日誌記錄系統。我們能夠向許多接收者廣播日誌消息。

  在本次教程中,我們向該系統添加一些特性,比如,我只需要嚴重錯誤(erroe級別)的部分日誌打印到磁盤文件中,但是同時仍然把所有的日誌打印到控制臺。

2、綁定

  在前面的例子中。我們已經用以下的代碼創建了綁定。

技術分享圖片
1 channel.queueBind(queueName, EXCHANGE_NAME, "");
View Code

  綁定是指交換機(exchange)與隊列(queue)之間的聯系,也可以理解為,當某個隊列和某個交換機進行了綁定,那麽該隊列對該交換機的消息感應器。

  綁定的時候,我們可以提供一個額外的參數routingKey,為了避免與basic_publish的參數混淆,我們可以把它叫做綁定鍵(binding key),以下是如何創建帶綁定鍵的綁定。

技術分享圖片
1 channel.queueBind(queueName, EXCHANGE_NAME, "black");
View Code

  綁定鍵的意義取決於交換機的類型,我們之前使用過的扇型交換機(fanout exchanges)會忽略這個值。

3、直接交換機

  上一篇寫的日誌系統廣播所有的消費者(consumers),我們打算擴展它,基於日誌的嚴重程度進行日誌消息過濾,例如我們也許只是希望將比較嚴重的錯誤(error)日誌寫入磁盤,以免在警告(warning)或者信息(info)日誌上浪費磁盤空間。

  上一篇中,我們使用的扇型交換機(fanout exchange)是沒有足夠的靈活性 —— 它能做的僅僅是廣播。

  在這裏我們要使用直接 交換機進行代替,它的算法很簡單——交換機將對綁定鍵和路由鍵進行精確匹配,然後決定將消息發送到哪個隊列。模型如下圖所示。

              技術分享圖片

  從上圖列子中可以看出,直接交換機x與兩個隊列Q1、Q2進行綁定,第一個隊列使用了orange作為綁定鍵,第二個隊列有兩個綁定鍵,一個使用可black作為綁定鍵,另外一個使用了green作為綁定鍵。

  

rabbitmq系列四 之路由