Rabbitmq-交換機詳解
時間:2023-09-09 來源:華清遠見
1 交換機介紹
RabbitMQ中,所有生產者提交的消息都由Exchange來接受,然后Exchange按照特定的策略轉發到Queue進行存儲
RabbitMQ提供了四種Exchange:路由模式,訂閱模式,主題模式,首部模式
header模式在實際企業項目開發中幾乎不用,本文只對前三種模式進行比較。
性能排序:訂閱模式 > 路由模式 > 主題模式 > 首部模式
1、直連交換機(Direct exchange)- 路由模式
具有路由功能的交換機,綁定到此交換機的時候需要指定一個routing_key,交換機發送消息的時候需要routing_key,會將消息發送道對應的隊列
2、扇形交換機(Fanout exchange):- 訂閱模式
廣播消息到所有隊列,沒有任何處理,速度最快。
3、主題交換機(Topic exchange):- 主題模式
在直連交換機基礎上增加模式匹配,也就是對routing_key進行模式匹配,*代表一個單詞,#代表多個單詞
4、首部交換機(Headers exchange):- 首部模式
忽略routing_key,使用Headers信息(一個Hash的數據結構)進行匹配,優勢在于可以有更多更靈活的匹配規則
1.1 直連交換機(路由模式)
直連交換機是一種帶路由功能的交換機,一個隊列會和一個交換機綁定,除此之外再綁定一個routing_key,當消息被發送的時候,需要指定一個binding_key,這個消息被送達交換機的時候,就會被這個交換機送到指定的隊列里面去。同樣的一個binding_key也是支持應用到多個隊列中的。 這樣當一個交換機綁定多個隊列時,就會被送到對應的隊列去處理。





1.2 扇形交換機(訂閱模式)
扇形交換機是最基本的交換機類型,它能做的事非常簡單——廣播消息,扇形交換機會把能接收到的消息全部發送給綁定在自己身上的隊列。因為廣播不需要"思考",所以扇形交換機處理消息的速度也是所有的交換機類型里面最快的。






1.3主題交換機(主題模式)
直連交換機的routing_key方法非常簡單,如果希望將一條消息發送給多個隊列,那么這個交換機需要綁定非常多的routing_key,這樣的話消息的管理就會非常的因難。 所以RabbitMQ提供了一種主題交換機,發送到主題交換機上的消息需要攜帶制定規則的routingkey,主題交換機會根據這個規則將數據發送到對應的隊列上。



