分布式高性能消息处理中心HPMessageCenter
生活随笔
收集整理的這篇文章主要介紹了
分布式高性能消息处理中心HPMessageCenter
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
HPMessageCenter
高性能消息分發(fā)中心。用戶只需寫好restful接口,在portal里面配置消息的處理地址,消息消費(fèi)者就會自動訪問相關(guān)接口,完成消息任務(wù)。(其實(shí)HPMessageCenter有兩個版本,這次開源的是第二個版本。在第一個版本,消息消費(fèi)失敗的重試依賴數(shù)據(jù)庫進(jìn)行,造成了很大的性能影響。我一直在思考怎樣不依賴數(shù)據(jù)庫來進(jìn)行消息重試,看過一些實(shí)現(xiàn)是通過在內(nèi)存中計(jì)數(shù),這種方式存在很大的風(fēng)險,系統(tǒng)宕機(jī)過后這個失敗的消息就只能手動處理。我一直在想,如果每次RabbitMQ重入隊(duì)的消息能在消息屬性中加一個消息發(fā)送次數(shù)的計(jì)數(shù)就好了。最后,我利用延時隊(duì)列和死信隊(duì)列,通過在MessageHeader中設(shè)置RetryNumbers來重新設(shè)計(jì)了消息消費(fèi)失敗的重試機(jī)制。) Git地址https://gitee.com/dugukuangshao/HPMessageCenter部署說明
**創(chuàng)建數(shù)據(jù)庫執(zhí)行Scripts文件夾中的數(shù)據(jù)庫腳本** **配置數(shù)據(jù)庫連接字符串** 打開MessageCenter.Portal\Configuration\Data\Database.config在圖片中畫紅線的地方修改鏈接字符串**配置RabbitMQ連接屬性** 打開MessageCenter.Portal\appsettings.json在圖片中畫紅線的地方修改RabbitMQ地址和用戶名密碼部署MessageCenter.Portal到IIS或者Docker中,即可訪問使用說明
**在首頁中配置App和Exchange** **在Topic管理頁面中配置Topic信息** ProcessorConfig為消息消費(fèi)者處理消息的Restful接口**最后在消費(fèi)者管理頁面中添加Sever要運(yùn)行的Consumer** 此時,通過Publisher/Publish接口發(fā)送消息到RabbitMQ,系統(tǒng)中的消費(fèi)者會自動訪問配置的對應(yīng)消息處理接口處理消息。### 為什么要開發(fā)這樣一個消息系統(tǒng)使用此消息系統(tǒng)處理消息,開發(fā)者只需調(diào)用接口發(fā)送消息、寫消息處理的接口,不必關(guān)心MQ的實(shí)現(xiàn)和使用,使開發(fā)者更關(guān)注業(yè)務(wù),提高開發(fā)效率。
擴(kuò)展性
MessageTransit模塊是一個高度抽象的模塊,開發(fā)者可以繼承它的接口實(shí)現(xiàn)其他MQ(ActiveMQ和RocketMQ等)的對接。該模塊還設(shè)計(jì)了IMonitor和ILogger接口,開發(fā)者可以繼承IMonitor接口,自定義實(shí)現(xiàn)消息處理失敗的短信、郵件通知等功能,繼承ILogger接口,可以實(shí)現(xiàn)MQ斷線的通知等,當(dāng)然默認(rèn)的RabbitMQ實(shí)現(xiàn)支持?jǐn)嗑€重連。性能
一個Sever里每個Topic對應(yīng)一個消費(fèi)者。一個消費(fèi)者一次處理一個消息,如果發(fā)生消息處理不及時的情況,可以部署多個Sever,并在消費(fèi)者管理頁面添加對應(yīng)的消息消費(fèi)者。如果消息數(shù)量進(jìn)一步提高,就需要同步增加消息Restful處理接口的處理能力。比如,一個消息處理接口可以處理每分鐘300個并發(fā),一個Sever每分鐘只能處理60個消息,此時可以部署5個Sever。消息進(jìn)一步增加,消息處理接口性能達(dá)到瓶頸,增加消息處理接口的處理能力,再增加Sever數(shù)即可提高性能。原文地址:http://www.cnblogs.com/DKSL/p/8489544.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的分布式高性能消息处理中心HPMessageCenter的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core:新的快速开发平台
- 下一篇: 浅谈Log4net在项目中如何记录日志