明人不說暗話,跟着阿笨一塊兒玩NET。今天咱們要解決的一個實際工做中的業務需求場景問題:如何將M條的消息或者任務,儘量的保證平均分發給N個消費者進行處理。業務上要求保證儘量的消息的平均分佈,同時消息隊列中的同一條消息,必須保證只能給一個消費者進行消費處理,即不容許被重複進行消費。通俗一點就是咱們要解決雞蛋與籃子的存放數學問題:如何將10(M)個雞蛋放在5(N)個籃子中呢?算法
1.一、本次分享課程適合人羣以下docker
1)、有必定的.NET Core開發基礎。學習
2)、有必定的Docker和RabbitMQ基礎知識。spa
3)、學習和了解.Net Core跨平臺開發技術。blog
1.二、一句話總結今天咱們要學習的目標?接口
如何基於RabbitMQ消息隊列來實現海量消息任務分發。rabbitmq
若是您一樣對本次分享《ASP.NET Core基於RabbitMQ實現海量任務消息隊列分發實戰演練》課程感興趣的話,那麼請跟着阿笨一塊兒學習吧。廢話很少說,直接上乾貨,咱們不生產乾貨,咱們只是乾貨的搬運工。隊列
爲何要使用Docker,Docker的好處是什麼?
能夠認爲Docker是一個通用安裝程序。簡單來講,利用Docker容器,能夠將任何一個或者多個程序封裝起來,並提供標準的管理接口。由於使用了容器,因此能夠很方便的把生產環境和開發環境分開,互不影響,這樣,開發人員負責維護內容,並使用Docker進行封裝,系統管理人員利用Docker的標準接口進行部署和管理。
Docker最近很火,因此就打算使用。你們根據自身狀況,若是是剛開始學習的RabbitMQ話,這裏仍是建議你們先安裝在Windows系統或者是Linux系統上。開發docker run -d --name aben-rabbitmq -p 15672:15672 -p 5671:5671 -p 5672:5672 rabbitmq:management此時,咱們能夠訪問以下地址來訪問自帶的Web管理頁面:部署
http://192.168.137.237:15672/
默認帳號/密碼:guest/guest
一、儘量的公平的分發消息到不一樣的隊列中去,保證其平均分發、平均分佈。
答:能夠採用取模算法和簡單的輪詢算法。
二、如何儘量的保證公平分發機制,避免消息被重複消費。
答:每個消費者只訂閱本身所屬編號的消息隊列便可。
假如如今每一個客戶端的消息處理能力不一樣,那麼如何根據客戶端的消息處理能力的高低來實現消息的分批呢?簡單一點說就是實現多勞多得,能者多勞。
答案:能夠採用加權平均算法,從而能夠實現消息的分批根據每一個客戶端的權重來分發任務。
咱們學習一門技術,最好先弄明白該技術解決的業務場景是什麼,而後帶着需求問題去學習和實踐。
但願本次分享課程可以讓你們有所收穫!最後送你們一句話:但願你們在.NET Core的學習道路上一直跟着阿笨堅持下去。