PowerDotNet平台化軟體架構設計與實現系列(09):消息平台
- 2021 年 12 月 24 日
- 筆記
- architecture, messagequeue, microservices, 服務, 架構, 系統, 設計, 隊列
消息隊列已經幾乎成為大中型高吞吐應用的標配,繼續根據我們一貫的節約程式碼的風格,為了復用的目標,抽象出消息隊列平台,進行消息隊列管理。
環境準備
1、(必須).Net Framework4.5+
2、(必須)關係型資料庫MySQL或SqlServer或PostgreSQL或MariaDB四選一
3、(必須)PowerDotNet資料庫管理平台,主要使用DBKey功能
4、(必須)PowerDotNet配置中心Power.ConfigCenter
5、(必須)PowerDotNet註冊中心Power.RegistryCenter
6、(必須)PowerDotNet快取平台Power.Cache
7、(必須)PowerDotNet基礎數據平台Power.BaseData
8、(必須)PowerDotNet人員管理平台Power.HCRM,後續文章詳細介紹
9、(必須)RabbitMQ
一、消息隊列
PowerDotNet默認支援的消息隊列是RabbitMQ和MSMQ(本文重點講講RabbitMQ),並可以繼續抽象,預留擴展介面,後續可以支援更多種消息隊列,比如RocketMQ、ZeroMQ、Kafka等。
1、消息隊列伺服器
PowerDotNet重點支援RabbitMQ,精心開發了RabbitMQ消息隊列管理後台,支援常用統計和連接、通道、交換機、隊列、RoutingKey綁定和用戶相關的常用操作。
消息隊列默認就支援集群高可用部署,推薦使用鏡像模式。
公共隊列工具可以方便大家快速排查定位問題。
3、消息隊列分組
和快取非常類似,對於大中型企業來說,消息隊列也經常需要按照業務團隊進行分組管理。
PowerDotNet完美支援按照系統和應用進行MQKey綁定,做到按組管理。
先定義MQKey,一個MQKey等同於一個消息隊列分組:
綁定MQKey到具體應用:
和快取平台一樣,只用使用公共消息隊列組件Power.MQ,直接在管理後台點點按鈕,配置中心配置一下應用所使用的MQKey,應用就自動擁有了使用消息隊列的能力,開發應用不要太容易,咩哈哈。
使用消息平台,對開發人員,很容易使用和維護消息隊列,誰用誰知道。
二、消息管理
絕大多數公司,幾乎都會用到的主要幾個消息溝通工具,比如郵件、簡訊、微信、釘釘等消息。
消息的發送默認都是通過消息隊列,當然可以通過配置中心開關配置為直接發送或寫庫非同步發送。這裡你可以認為消息是對消息隊列的最佳實踐,是不是比較拗口?咩哈哈。
這裡的「消息」和消息隊列平台完全沒有關係。僅僅只是我的個人開發經驗,把郵件、簡訊、微信、釘釘等可復用的消息管理也歸屬到消息平台而已。
1、消息配置
配置的內容還挺多:
支援郵件、簡訊和微信的動態配置。釘釘則比較特殊,可以通過配置中心配置。
2、消息模板
有過短消息或者推送系統的開發人員就知道消息模板的重要性了,可以省去很多很多程式碼。
3、消息管理
對於某些敏感消息,可能需要加密或脫敏處理,或者乾脆不存儲敏感內容,PowerDotNet的消息管理有配置參數支援這一種特殊邏輯,點點按鈕即可搞定。
發送的消息,可能成功,可能失敗,可以通過消息管理進行特殊業務邏輯,如錯誤消息重試、定時非同步發送等,對於這些主要功能,PowerDotNet都做到了,強大的消息平台讓你的應用開發如虎添翼。
參考:
//www.rabbitmq.com/dotnet.html