在RabbitMQ中,主要存在三種類型的exchange,本文將對這三種類型的exchange的定義及其使用場景進行說明。
一、Fanout類型
如果把exchange比作門衛,那麼這種exchange類型可以算是最清閒的門衛,它對任何消息均敞開大門,俗話說 "通喫",見下圖。
適應場景: 若任意一個消費者對所有從exchange流出的消息均進行消費,則fanout類型是這種場景的不二之選,類似於廣播,大傢伙都會收到相同的消息。
二、Direct類型
Direct類型的exchange需要把每一條來到的消息路由到該消息希望進入的隊列。和郵遞信類似,郵局是exchange,收到的信會根據目的地的不同投入到不同的信箱中,分管不同地區的郵遞員(消費者)從不同的信箱中取信投遞。見下圖,把orange、black和green分別比作寄信場景中不同的目的地。
適用場景:當消費端出現比較挑剔的消費者時,這時候就需要用到direct類型了,我想一個郵遞員肯定不想同時負責兩個或兩個以上地區的郵寄業務吧~。
三、Topic類型
這種類型是最爲複雜,其本質實現了在direct類型基礎上更爲精細的分發機制,應用場景類似direct類型。見下圖。
該類型更爲深入的學習可參考鏈接:https://www.rabbitmq.com/tutorials/tutorial-five-python.html