最新版本的RabbitMQ有四種交換機類型,分别是Direct exchange、Fanout exchange、Topic exchange、Headers exchange。
1.Direct Exchange
處理路由鍵。需要将一個隊列綁定到交換機上,要求該消息與一個特定的路由鍵完全比對。這是一個完整的比對。如果一個隊列綁定到該交換機上要求路由鍵 “abc”,則隻有被标記為“abc”的消息才被轉發,不會轉發abc.def,也不會轉發dog.ghi,隻會轉發abc。
2.Fanout Exchange
不處理路由鍵。你隻需要簡單的将隊列綁定到交換機上。一個發送到交換機的消息都會被轉發到與該交換機綁定的所有隊列上。很像子網廣播,每台子網内的主機都獲得了一份複制的消息。Fanout交換機轉發消息是最快的。
3.Topic Exchange
将路由鍵和某模式進行比對。此時隊列需要綁定要一個模式上。符号“#”比對一個或多個詞,符号“”比對不多不少一個詞。是以“abc.#”能夠比對到“abc.def.ghi”,但是“abc.” 隻會比對到“abc.def”。
4.Headers Exchanges
不處理路由鍵。而是根據發送的消息内容中的headers屬性進行比對。在綁定Queue與Exchange時指定一組鍵值對;當消息發送到RabbitMQ時會取到該消息的headers與Exchange綁定時指定的鍵值對進行比對;如果完全比對則消息會路由到該隊列,否則不會路由到該隊列。headers屬性是一個鍵值對,可以是Hashtable,鍵值對的值可以是任何類型。而fanout,direct,topic 的路由鍵都需要要字元串形式的。