随笔 - 268  文章 - 0  评论 - 1028  阅读 - 160万

PowerDotNet平台化软件架构设计与实现系列(09):消息平台

消息队列已经几乎成为大中型高吞吐应用的标配,继续根据我们一贯的节约代码的风格,为了复用的目标,抽象出消息队列平台,进行消息队列管理。

环境准备

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绑定和用户相关的常用操作。

消息队列默认就支持集群高可用部署,推荐使用镜像模式。

公共队列工具可以方便大家快速排查定位问题。

2、消息队列分组

和缓存非常类似,对于大中型企业来说,消息队列也经常需要按照业务团队进行分组管理。

PowerDotNet完美支持按照系统和应用进行MQKey绑定,做到按组管理。

先定义MQKey,一个MQKey等同于一个消息队列分组:

绑定MQKey到具体应用:

和缓存平台一样,只用使用公共消息队列组件Power.MQ,直接在管理后台点点按钮,配置中心配置一下应用所使用的MQKey,应用就自动拥有了使用消息队列的能力,开发应用不要太容易,咩哈哈。

使用消息平台,对开发人员,很容易使用和维护消息队列,谁用谁知道。

二、消息管理

绝大多数公司,几乎都会用到的主要几个消息沟通工具,比如邮件、短信、微信、钉钉等消息。

消息的发送默认都是通过消息队列,当然可以通过配置中心开关配置为直接发送或写库异步发送。这里你可以认为消息是对消息队列的最佳实践,是不是比较拗口?咩哈哈。

这里的“消息”和消息队列平台完全没有关系。仅仅只是我的个人开发经验,把邮件、短信、微信、钉钉等可复用的消息管理也归属到消息平台而已。

1、消息配置

配置的内容还挺多:

支持邮件、短信和微信的动态配置。钉钉则比较特殊,可以通过配置中心配置。

2、消息模板

有过短消息或者推送系统的开发人员就知道消息模板的重要性了,可以省去很多很多代码。

3、消息管理

对于某些敏感消息,可能需要加密或脱敏处理,或者干脆不存储敏感内容,PowerDotNet的消息管理有配置参数支持这一种特殊逻辑,点点按钮即可搞定。

发送的消息,可能成功,可能失败,可以通过消息管理进行特殊业务逻辑,如错误消息重试、定时异步发送等,对于这些主要功能,PowerDotNet都做到了,强大的消息平台让你的应用开发如虎添翼。

参考:

https://www.rabbitmq.com

https://www.rabbitmq.com/dotnet.html

posted on   JeffWong  阅读(759)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2011-12-24 JavaScript和C#通用gb2312和utf8编码解码函数简单实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

I know how to make it works and I want to know how it works.
点击右上角即可分享
微信分享提示