天天看點

分布式高性能消息進行中心HPMessageCenter

HPMessageCenter

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

部署說明

**建立資料庫執行Scripts檔案夾中的資料庫腳本** 

 **配置資料庫連接配接字元串** 

打開MessageCenter.Portal\Configuration\Data\Database.config
      
分布式高性能消息進行中心HPMessageCenter
在圖檔中畫紅線的地方修改連結字元串

 **配置RabbitMQ連接配接屬性** 

打開MessageCenter.Portal\appsettings.json
      
分布式高性能消息進行中心HPMessageCenter
在圖檔中畫紅線的地方修改RabbitMQ位址和使用者名密碼

部署MessageCenter.Portal到IIS或者Docker中,即可通路      

使用說明

**在首頁中配置App和Exchange** 
      
分布式高性能消息進行中心HPMessageCenter
**在Topic管理頁面中配置Topic資訊** 
      
分布式高性能消息進行中心HPMessageCenter
ProcessorConfig為消息消費者處理消息的Restful接口

 **最後在消費者管理頁面中添加Sever要運作的Consumer** 
      
分布式高性能消息進行中心HPMessageCenter
此時,通過Publisher/Publish接口發送消息到RabbitMQ,系統中的消費者會自動通路配置的對應消息處理接口處理消息。

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

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

擴充性

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

性能

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

繼續閱讀