RabbitMQ四種交換機型別介紹
原文地址: https://baijiahao.baidu.com/s?id=1577456875919174629&wfr=spider&for=pc
最新版本的RabbitMQ有四種交換機型別,分別是Direct exchange、Fanout exchange、Topic exchange、Headers exchange。
Direct Exchange
處理路由鍵。需要將一個佇列繫結到交換機上,要求該訊息與一個特定的路由鍵完全匹配。這是一個完整的匹配。如果一個佇列繫結到該交換機上要求路由鍵 “abc”,則只有被標記為“abc”的訊息才被轉發,不會轉發abc.def,也不會轉發dog.ghi,只會轉發abc。
Fanout Exchange
不處理路由鍵。你只需要簡單的將佇列繫結到交換機上。一個傳送到交換機的訊息都會被轉發到與該交換機繫結的所有佇列上。很像子網廣播,每臺子網內的主機都獲得了一份複製的訊息。Fanout交換機轉發訊息是最快的。
Topic Exchange
將路由鍵和某模式進行匹配。此時佇列需要繫結要一個模式上。符號“#”匹配一個或多個詞,符號“”匹配不多不少一個詞。因此“abc.#”能夠匹配到“abc.def.ghi”,但是“abc.” 只會匹配到“abc.def”。
Headers Exchanges
不處理路由鍵。而是根據傳送的訊息內容中的headers屬性進行匹配。在繫結Queue與Exchange時指定一組鍵值對;當訊息傳送到RabbitMQ時會取到該訊息的headers與Exchange繫結時指定的鍵值對進行匹配;如果完全匹配則訊息會路由到該佇列,否則不會路由到該佇列。headers屬性是一個鍵值對,可以是Hashtable,鍵值對的值可以是任何型別。而fanout,direct,topic 的路由鍵都需要要字串形式的。
匹配規則x-match有下列兩種型別:
x-match = all :表示所有的鍵值對都匹配才能接受到訊息
x-match = any :表示只要有鍵值對匹配就能接受到訊息