日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

6 交换机-topic类型

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 6 交换机-topic类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • topic類型
    • 1、topic類型的exchange

topic類型

在上文中,盡管使用了direct類型的exchange對日志系統有所提升,但還是有一些限制(消息不能夠基于多重因素來路由)。

在我們的日志系統中,希望不僅僅能夠根據日志級別來訂閱,還可以根據指定的routing key來訂閱。你應該可以理解的,就如unix的系統日志工具,日志消息路由規則不僅僅基于日志級別(info/warn/crit…),還可以基于設備(auth/cron/kern...)。

這樣大大的提高的靈活性,例如我們可以只監聽kern推送出來的error級別的日志。

為了在我們的日志記錄系統中實現這樣的功能,我們需要了解更多關于topic類型的exchange

1、topic類型的exchange

消息發送到topic類型的exchange上時不能隨意指定routing_key(一定是指由一系列由點號連接單詞的字符串,單詞可以是任意的,但一般都會與消息或多或少的有些關聯)。Routing key的長度不能超過255個字節;

Binding key也一定要是同樣的方式。Topic類型的exchange就像一個直接的交換:一個由生產者指定了確定routing key的消息將會被推送給所有Binding key能與之匹配的消費者。然而這種綁定有兩種特殊的情況

  • “*” 可以匹配一個單詞,也只可以是一個單詞
  • “#” 可以匹配多個單詞,或者是0個

解釋:

在這個例子中,我們將會發送一些描述動物的消息。Routing key的第一個單詞是描述速度的,第二個單詞是描述顏色的,第三個是描述物種的:“<speed>.<colour>.<species>”。

這里我們創建三個Binding:Binding key為”*.orange.*”的Q1,和binding key為”*.*.rabbit”和”lazy.#”的Q2。

這些binding可以總結為:

  • Q1對所有橘色的(orange)的動物感興趣;
  • Q2希望能拿到所有兔子的(rabbit)信息,還有比較懶惰的(lazy.#)動物信息。

一條以” quick.orange.rabbit”為routing key的消息將會推送到Q1和Q2兩個queue上,routing key為“lazy.orange.elephant”的消息同樣會被推送到Q1和Q2上。但如果routing key為”quick.orange.fox”的話,消息只會被推送到Q1上;routing key為”lazy.brown.fox”的消息會被推送到Q2上,routing key為"lazy.pink.rabbit”的消息也會被推送到Q2上,但同一條消息只會被推送到Q2上一次。

如果在發送消息時所指定的exchange和routing key在消費者端沒有對應的exchange和binding key與之綁定的話,那么這條消息將會被丟棄掉。例如:"orange"和"quick.orange.male.rabbit"。但是routing為”lazy.orange.male.rabbit”的消息,將會被推到Q2上。

Topic類型的exchange

Topic類型的exchange是很強大的,也可以實現其它類型的exchange。

當一個隊列被綁定為binding key為”#”時,它將會接收所有的消息,此時和fanout類型的exchange很像。
當binding key不包含”*”和”#”時,這時候就很像direct類型的exchange。

轉載于:https://www.cnblogs.com/zhaod/p/11391607.html

總結

以上是生活随笔為你收集整理的6 交换机-topic类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。