RabbitMQ、ErLang下載、RabbitMQ下載

最新資源2022-07-01
RabbitMQ下載鏈接:https://pan.baidu.com/s/1VBbH40EvY46jNRdiKYhFuw 提取碼:bcuq  版本 rabbitmq-server-3.10.5.exe
ErLang下載鏈接:https://pan.baidu.com/s/14VdKLiprOYPNtCYkZIkikQ 提取碼:a80b   版本 otp_win64_25.0.exe
RabbitMQ隊列模式:
1.簡單隊列:生產者將消息發送到隊列,消費者從隊列中獲取消息。
2.work模式:一個生產者,兩個消費者,一個消息只能被一個消費者獲取。
3.訂閱模式:1個生產者,多個消費者,每一個消費者都有自己的一個隊列,生產者沒有將消息直接發送到隊列,而是發送到了交換機,每個隊列都要綁定到交換機,生產者發送的消息,經過交換機,到達隊列,實現一個消息被多個消費者獲取的目的,
注意:一個消費者隊列可以有多個消費者實例,只有其中一個消費者實例會消費
4.路由模式:交換機可以綁定一個或多個隊列,當交換機沒有綁定隊列時,消息會直接丟棄,若聲明的隊列沒有持久化,程序停止後,綁定隊列會自動刪除
5.主題模式(通配符模式):同一個消息被多個消費者獲取。一個消費者隊列可以有多個消費者實例,只有其中一個消費者實例會消費到消息
NuGet安裝包:RabbitMQ.Client(6.4.0)

二、RabbitMQ 相關知識
1. 消息分發機制
輪詢分發 :使用任務隊列的優點之一就是可以輕易的並行工作。如果我們積壓了好多工作,我們可以通過增加工作者(消費者)來解決這一問題,使得系統的伸縮性更加容易。在默認情況下,RabbitMQ將逐個發送消息到在序列中的下一個消費者(而不考慮每個任務的時長等等,且是提前一次性分配,並非一個一個分配)。平均每個消費者獲得相同數量的消息。這種方式分發消息機制稱爲Round-Robin(輪詢)。
公平分發 :雖然上面的分配法方式也還行,但是有個問題就是:比如:現在有2個消費者,所有的奇數的消息都是繁忙的,而偶數則是輕鬆的。按照輪詢的方式,奇數的任務交給了第一個消費者,所以一直在忙個不停。偶數的任務交給另一個消費者,則立即完成任務,然後閒得不行。而RabbitMQ則是不瞭解這些的。這是因爲當消息進入隊列,RabbitMQ就會分派消息。它不看消費者爲應答的數目,只是盲目的將消息發給輪詢指定的消費者。
2. 消息的確認模式
消費者從隊列中獲取消息,服務端如何知道消息已經被消費呢?
模式1:自動確認
只要消息從隊列中獲取,無論消費者獲取到消息後是否成功消息,都認爲是消息已經成功消費。
模式2:手動確認
消費者從隊列中獲取消息後,服務器會將該消息標記爲不可用狀態,等待消費者的反饋,如果消費者一直沒有反饋,那麼該消息將一直處於不可用狀態。
3. Ack,Nack,Reject的關係
1. 消息處理成功,執行Ack,RabbitMQ會把消息從隊列中刪除。
2. 消息處理失敗,執行Nack或者Reject:
a) 當requeue=true時,消息會重新回到隊列,然後當前消費者會馬上再取回這條消息;
b) 當requeue=false時,如果Exchange有設置Dead Letter Exchange,則消息會去到Dead Letter Exchange;
c) 當requeue=false時,如果Exchange沒設置Dead Letter Exchange,則消息從隊列中刪除,效果與Ack相同。
3. Nack與Reject的區別在於:Nack可以批量操作,Reject只能單條操作。

參考:https://blog.csdn.net/sundna/article/details/92701805
介紹與安裝步驟:https://blog.csdn.net/shuux666/article/details/124337419
vs2022:https://blog.csdn.net/qq_45222482/article/details/125302956
https://www.cnblogs.com/oktokeep/p/16363003.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章