日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ 入门:2. Exchange 和 Queue

發布時間:2023/12/4 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ 入门:2. Exchange 和 Queue 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上文RabbitMQ 入門:1. Message Broker(消息代理)提到過 RabbitMQ 實現了 AMQP 這個協議(RabbitMQ 所支持的 AMQP 的版本是 0.9.1),這個協議的內容很多,但為了構建入門級的分布式應用,我們只需要了解以下幾點即可。

?

在最簡單的場景下,RabbitMQ 的架構示意圖大致如下:

  • 首先某個消息從發布者那里發往 ? ? RabbitMQ

  • 這個消息需要聲明一個 Exchange(也可以翻譯成交換機),并被發往這個 ? ? Exchange

    • Exchange ? ? ?有點類似“暫存區”,消息都會發往 Exchange。用個類比來說:Exchange ? ? ?就像郵箱一樣,我們寫的信件首先都要放到郵箱里才能進行發送。

  • 然后,Exchange ? ? 將使用消息內的一些信息以及它自己的配置來決定一條或多條發送消息的路由。

  • 這些路由都通向一個 Queue(隊列),消息會存儲在這個 Queue 里,等待消息的接收者來進行使用。

  • 一個消息的接收者可以使用 Queue 中的信息。一旦確認這個消息被傳遞成功,那么它將從 Queue 中被刪除。

    • RabbitMQ ? ? ?所提供的松耦合的特性,主要是因為 Exchange Queue 的分離。

    • 繼續使用郵箱的類比,Queue 就相當于是接收信件的郵箱。而根據郵件地址,郵件系統會選擇不同的郵箱來接收郵件。

?

而由于 RabbitMQ 處理的是消息,而不是信件,所以它的選項會更多:RabbitMQ 一共有 4 Exchange

  • Direct Exchange。它是默認的 Exchange 。它會把消息發送到一個接收者。如果注冊了多個接收者來監聽同樣的路由 Key,那么 ? ? RabbitMQ 將會向每個 Queue 輪流發送一條消息,相當于提供了一個簡單的負載均衡

  • Fanout Exchange 它把消息的副本發送到每個綁定到該 ? ? Exchange Queue 上面。而這里的 Queue 沒有辦法對消息進行過濾,如果需要過濾,則需要在消息接收者那里實現。

  • Topic Exchange。它和 Direct Exchange 類似,但不同的是:每個消息接收者監聽特定的路由 Key,它們會收到消息的副本。

    • 例如聊天室就可以使用 Topic ? ? ?Exchange。每個聊天室的 ID 可以作為路由 Key,這樣就可以保證消息只會發送給同一個聊天室的其他參與者。

  • Headers Exchange。這類 ? ? Exchange 會忽略路由 Key,取而代之的是,它們會查看消息的 Header,并由此來決定消息應該發往哪個 QueueQueue 可以有一個或多個 Header 用來進行匹配。這也就開啟了復雜的路由場景,例如某個 Queue 有時可以接收到某類消息而有時則不行。

?

下面僅針對 Fanout Exchange 進行進一步說明:

?

Fanout Exchange

當消息被發往 RabbitMQ 的時候,需要指明它需要發送到哪個 Exchange。而這個Exchange 就可以被設置成為所謂的 Fanout Exchange

使用 Fanout Exchange,消息會被克隆,并被發送到所有與這個 Exchange 綁定的 Queue 上,如下圖:

這里每一個 Queue 都會得到屬于自己的消息的副本,這些消息副本就i可以被消息的接收者所使用。

在很多大規模多人游戲的場景中,經常使用這種方式來同步玩家的數據:每個玩家都訂閱到一個Fanout Exchange,你游戲的實例只需要將數據發送到一個地方即可,游戲中其他的玩家就會獲得更新,而你的游戲實例就不需要知道如何數據發往每一個玩家了。

總結

以上是生活随笔為你收集整理的RabbitMQ 入门:2. Exchange 和 Queue的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。