ASP.NET Core基於RabbitMQ實現海量消息隊列分發實戰演練

一、需求背景

明人不說暗話,跟着阿笨一起玩NET。今天我們要解決的一個實際工作中的業務需求場景問題:如何將M條的消息或者任務,儘可能的保證平均分發給N個消費者進行處理。業務上要求保證儘可能的消息的平均分佈,同時消息隊列中的同一條消息,必須保證只能給一個消費者進行消費處理,即不允許被重複進行消費。通俗一點就是我們要解決雞蛋與籃子的存放數學問題:如何將10(M)個雞蛋放在5(N)個籃子中呢?

1.1、本次分享課程適合人羣如下

1)、有一定的.NET Core開發基礎。

2)、有一定的Docker和RabbitMQ基礎知識。

3)、學習和了解.Net Core跨平臺開發技術。

1.2、一句話總結今天我們要學習的目標?

如何基於RabbitMQ消息隊列來實現海量消息任務分發。

如果您同樣對本次分享《ASP.NET Core基於RabbitMQ實現海量任務消息隊列分發實戰演練》課程感興趣的話,那麼請跟着阿笨一起學習吧。廢話不多說,直接上乾貨,我們不生產乾貨,我們只是乾貨的搬運工。

二、快速利用Docker構建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

三、在線源碼實戰演練講解

1、儘可能的公平的分發消息到不同的隊列中去,保證其平均分發、平均分佈。

答:可以採用取模算法和簡單的輪詢算法。

2、如何儘可能的保證公平分發機制,避免消息被重複消費。

答:每一個消費者只訂閱自己所屬編號的消息隊列即可。

四、總結

假如現在每個客戶端的消息處理能力不同,那麼如何根據客戶端的消息處理能力的高低來實現消息的分批呢?簡單一點說就是實現多勞多得,能者多勞。

答案:可以採用加權平均算法,從而可以實現消息的分批根據每個客戶端的權重來分發任務。

我們學習一門技術,最好先弄明白該技術解決的業務場景是什麼,然後帶着需求問題去學習和實踐。

希望本次分享課程能夠讓大家有所收穫!最後送大家一句話:希望大家在.NET Core的學習道路上一直跟着阿笨堅持下去。

作者:阿笨 

      官方QQ羣:422315558 跟着阿笨一起玩NET 574187616跟着阿笨一起玩NET(二) 967920586跟着阿笨一起玩ASP.NET 

      【網易雲課堂主頁】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628

      【騰訊課堂主頁】:https://abennet.ke.qq.com/

      【微信公衆號】:http://dwz.cn/ABenNET

 

發佈了81 篇原創文章 · 獲贊 11 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章