高性能消息分發中心。用戶只需寫好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數便可提升性能。