Appearance
消息队列
定义平台消息队列(MQ)的宿主选型、配置规则、业务使用边界及消息通知规范。核心原则为基础设施MQ专注底层异步流转,业务通知统一收敛消息中心,杜绝业务场景直接裸用MQ,保证平台消息架构统一、规范、可维护。
功能说明
平台将底层消息队列与业务消息通知能力严格拆分,两类能力各司其职,禁止混用:
- MQ(Redis/Kafka):属于底层基础设施能力,仅用于技术层异步解耦、系统数据流转、后台任务调度、日志投递、数据同步等底层技术场景,不直接承载前端/用户侧业务通知。
- 消息中心:属于业务层消息能力,统一承接所有用户通知、业务提醒、流程推送、状态变更告知等业务场景,通过标准化通道、策略配置实现消息分发、降级、重试、静默控制。
名词解释
| 名词 | 说明 |
|---|---|
| MQ.Type | 消息队列宿主类型,平台支持两种可选类型:Redis、Kafka,用于定义底层MQ通信载体 |
一、配置规范
1.1 配置入口
所有MQ连接参数、队列配置、消费参数、超时、重试等基础配置,统一托管于项目 appsettings 配置文件,同时支持后台管理菜单可视化配置覆盖。
具体字段定义、参数释义、取值规则以系统对应菜单表单字段说明为准。
1.2 配置节点说明
系统预设统一 MQ 配置根节点,包含但不限于以下通用配置项:
- MQ.Type:指定队列宿主(Redis/Kafka)
- 连接地址、端口、账号密码
- 队列主题/队列名前缀
- 消费线程数、批量消费大小
- 消息超时、重试次数、死信策略
- 开关、调试日志、监控上报配置
二、使用场景与边界规则
2.1 允许直接使用原生MQ的场景
- 系统内部数据异步同步、数据落库缓冲
- 后台定时任务、延迟任务、异步解耦处理
- 系统日志、操作日志、审计日志异步投递
- 第三方回调消息接收与转发
- 高吞吐、低业务感知的技术类消息流转
2.2 禁止直接使用原生MQ的场景(必须走消息中心)
- 用户站内通知、弹窗提醒、消息红点
- 业务流程变更、审批通知、状态变更提醒
- 系统公告、活动通知、告警提醒
- 所有需要控制受众、频次、权限、开关的业务消息
三、使用示例规范
3.1 底层MQ使用
技术层异步场景,直接基于 appsettings 中 MQ 节点配置,通过框架封装的通用MQ客户端进行生产、消费,业务代码无需硬编码连接参数与队列信息。
3.2 业务消息使用
所有业务通知场景,不自行编写MQ投递逻辑,统一调用消息中心能力,通过消息中心后台菜单配置消息通道、推送策略、模板、受众规则,实现业务消息快速落地。
四、选型策略(Redis / Kafka)
根据业务吞吐量、可靠性要求选择对应MQ类型:
- Redis MQ:适用于轻量、低延迟、中小吞吐、允许少量消息丢失的常规异步任务场景,接入简单、性能优异。
- Kafka MQ:适用于高吞吐、海量数据、日志流水、严格顺序、高可靠、可回溯的大数据量消息流转场景。
五、配置示例
"MQ": {
"Type": "Redis",
"Kafka": {
"Servers": "${KAFKA_SERVERS}"
},
"Redis": {
"Servers": "${REDIS_CONNECTION}"
}
}