(本實例都是使用的Net的客戶端,使用C#編寫),說明,中文方括號【】表示名詞。

   在上一個教程中,我們改進(jìn)了我們的日志記錄系統(tǒng)。 沒有使用只能夠進(jìn)行虛擬廣播的【Fanout】交換機(jī),而是使用了【Direct】類型的交換機(jī),這樣做就可以讓我們有可能選擇性地接收日志。

  雖然使用【Direct】類型的【消息交換機(jī)】改進(jìn)了我們的系統(tǒng),但它仍然有限制 - 它不能基于多個標(biāo)準(zhǔn)進(jìn)行路由選擇。


  在我們的日志記錄系統(tǒng)中,我們可能不僅要根據(jù)嚴(yán)重性訂閱日志,還可以基于發(fā)出日志的源進(jìn)行訂閱。 您可能會從syslog unix工具中了解這一概念,該工具根據(jù)嚴(yán)重性(info/warn/crit...)和設(shè)施(auth / cron / kern ...)路由日志。

   這將給我們很大的靈活性 - 我們可能既想監(jiān)聽來自“cron”的重要錯誤,也可以監(jiān)聽“kern”的所有日志。

   要在我們的日志記錄系統(tǒng)中實現(xiàn),我們需要了解一個更為復(fù)雜的topic類型的【消息交換機(jī)】。

1、Topic類型的【消息交換機(jī)】

   發(fā)送到【Topic】類型【消息交換機(jī)】的消息不能有任意的routing_key - 它必須是由點分隔的單詞列表。 這些詞可以是任何東西,但通常它們指定與消息相關(guān)聯(lián)的一些功能。 幾個有效的路由關(guān)鍵字示例:“stock.usd.nyse”,“nyse.vmw”,“quick.orange.rabbit”。 路由關(guān)鍵字中可以有任意多的單詞,最多可達(dá)255個字節(jié)。

   綁定鍵也必須是相同的形式?!綯opic】類型的【消息交換機(jī)】背后的邏輯類似于【Direct】類型的【消息交換機(jī)】 - 使用特定【路由鍵】發(fā)送的消息將被傳遞到與匹配的【綁定鍵】綁定的所有隊列。 但是,【綁定鍵】有兩個重要的特殊情況:

     *(星)可以替代一個字。
     #(井號)可以替換零個或多個單詞。

    在一個例子中最簡單的解釋一下:
    平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)

    在這個例子中,我們將發(fā)送所有描述動物的消息。消息將使用由三個字(兩個點)組成的【路由鍵】發(fā)送?!韭酚涉I】中的第一個字將描述速度,第二個顏色和第三個種類:“<speed>.<color>.<species>”。

    我們創(chuàng)建了三個綁定:Q1綁定鍵“*.orange.*”和Q2是“*.*.rabbit”和“l(fā)azy.?!苯壎?。

    這些【綁定鍵】所要表達(dá)意思可以總結(jié)為:

    Q1對所有的橙色動物感興趣。

    Q2想聽聽有關(guān)兔子的一切,以及關(guān)于lazy動物的一切。

    將【路由鍵】設(shè)置為“quick.orange.rabbit”的消息將傳遞給兩個隊列。消息“l(fā)azy.orange.elephant”也會發(fā)送他們那兩個隊列。另一方面,“quick.orange.fox”只會發(fā)送到第一個隊列,而“l(fā)azy.brown.fox”只能發(fā)送到第二個隊列。 “l(fā)azy.pink.rabbit”將被傳遞到第二個隊列只有一次,即使它匹配兩個綁定。 “quick.brown.fox”不匹配任何綁定,所以它將被丟棄。

   如果我們違反約定并發(fā)送一個或四個字的消息,如“orange”或“quick.orange.male.rabbit”,會發(fā)生什么?那么這些消息將不會匹配任何綁定,并將丟失。

   另一方面,“l(fā)azy.orange.male.rabbit”即使它有四個字,將匹配上一個綁定,并將被傳遞到第二個隊列。

   說明:【Topic】類型的【消息交換機(jī)】

     此類型的【消息交換機(jī)】是強(qiáng)大的,可以像其他【消息交換機(jī)】一樣行事。

     當(dāng)隊列用“?!保ü#窘壎ㄦI】綁定時,它將接收所有消息,而不管【路由鍵】,就像使用【Fanout】類型的【消息交換機(jī)】。

     當(dāng)特殊字符“*”(星號)和“?!保ü#┎挥糜诮壎〞r,【Topic】類型的【消息交換機(jī)】將表現(xiàn)得像一個使用【Direct】類型的【消息交換機(jī)】。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式