分布式高性能消息處理中心HPMessageCenter


HPMessageCenter

高性能消息分發中心。用戶只需寫好restful接口,在portal里面配置消息的處理地址,消息消費者就會自動訪問相關接口,完成消息任務。(其實HPMessageCenter有兩個版本,這次開源的是第二個版本。在第一個版本,消息消費失敗的重試依賴數據庫進行,造成了很大的性能影響。我一直在思考怎樣不依賴數據庫來進行消息重試,看過一些實現是通過在內存中計數,這種方式存在很大的風險,系統宕機過后這個失敗的消息就只能手動處理。我一直在想,如果每次RabbitMQ重入隊的消息能在消息屬性中加一個消息發送次數的計數就好了。最后,我利用延時隊列和死信隊列,通過在MessageHeader中設置RetryNumbers來重新設計了消息消費失敗的重試機制。
Git地址https://gitee.com/dugukuangshao/HPMessageCenter

部署說明

 **創建數據庫執行Scripts文件夾中的數據庫腳本** 

 **配置數據庫連接字符串** 

打開MessageCenter.Portal\Configuration\Data\Database.config

在圖片中畫紅線的地方修改鏈接字符串

 **配置RabbitMQ連接屬性** 

打開MessageCenter.Portal\appsettings.json

在圖片中畫紅線的地方修改RabbitMQ地址和用戶名密碼

部署MessageCenter.Portal到IIS或者Docker中,即可訪問

使用說明

 **在首頁中配置App和Exchange** 

 **在Topic管理頁面中配置Topic信息** 

ProcessorConfig為消息消費者處理消息的Restful接口

 **最后在消費者管理頁面中添加Sever要運行的Consumer** 

此時,通過Publisher/Publish接口發送消息到RabbitMQ,系統中的消費者會自動訪問配置的對應消息處理接口處理消息。

### 為什么要開發這樣一個消息系統

使用此消息系統處理消息,開發者只需調用接口發送消息、寫消息處理的接口,不必關心MQ的實現和使用,使開發者更關注業務,提高開發效率。

擴展性

MessageTransit模塊是一個高度抽象的模塊,開發者可以繼承它的接口實現其他MQ(ActiveMQ和RocketMQ等)的對接。該模塊還設計了IMonitor和ILogger接口,開發者可以繼承IMonitor接口,自定義實現消息處理失敗的短信、郵件通知等功能,繼承ILogger接口,可以實現MQ斷線的通知等,當然默認的RabbitMQ實現支持斷線重連。

性能

一個Sever里每個Topic對應一個消費者。一個消費者一次處理一個消息,如果發生消息處理不及時的情況,可以部署多個Sever,並在消費者管理頁面添加對應的消息消費者。如果消息數量進一步提高,就需要同步增加消息Restful處理接口的處理能力。比如,一個消息處理接口可以處理每分鍾300個並發,一個Sever每分鍾只能處理60個消息,此時可以部署5個Sever。消息進一步增加,消息處理接口性能達到瓶頸,增加消息處理接口的處理能力,再增加Sever數即可提高性能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM