一,Direct Exchange

rabbitTemplate創建交換機不用註解_消息分發

處理路由鍵。需要將一個隊列綁定到交換機上,要求該消息與一個特定的路由鍵完全匹配。這是一個完整的匹配。如果一個隊列綁定到該交換機上要求路由鍵 “dog”,則只有被標記為“dog”的消息才被轉發,不會轉發dog.puppy,也不會轉發dog.guard,只會轉發dog。 

 

二,Fanout Exchange

rabbitTemplate創建交換機不用註解_鍵值對_02

不處理路由鍵。你只需要簡單的將隊列綁定到交換機上。一個發送到交換機的消息都會被轉發到與該交換機綁定的所有隊列上。Fanout交換機轉發消息是最快的。 

 

三,Topic Exchange

rabbitTemplate創建交換機不用註解_字符串_03

將路由鍵和某模式進行匹配。類似與Direct交換機,只不過這個不是字符串的匹配,而是通過#和*來做匹配。符號“#”匹配一個或多個詞,符號“*”匹配不多不少一個詞。

 

四,Headers exchange

類型為headers的交換器與前面三種匹配方式完全不一樣,它不依賴與bindingKey和routingKey,而是在綁定隊列與交換器的時候指定一個鍵值對;當交換器在分發消息的時候會先解開消息體裏的headers數據,然後判斷裏面是否有所設置的鍵值對,如果發現匹配成功,才將消息分發到隊列中;這種交換器類型在性能上相對來説較差,在實際工作中很少會用到。

匹配規則x-match有下列兩種類型:

x-match = all :表示所有的鍵值對都匹配才能接受到消息

x-match = any :表示只要有鍵值對匹配就能接受到消息

 

五,Default Exchange

當你手動創建一個隊列時,後台會自動將這個隊列綁定到一個名稱為空的Direct類型交換機上,綁定路由名稱與隊列名稱相同。有了這個默認的交換機和綁定,我們就可以像其他輕量級的隊列,如Redis那樣,直接操作隊列來處理消息。

 

 

六,性能

從消息分發的性能上來比較:fanout > direct > topic > headers