集成必要性功能

This commit is contained in:
2026-03-12 16:25:24 +08:00
parent 5708f80091
commit f0649cb888
201 changed files with 303 additions and 19897 deletions

View File

@@ -1,4 +1,4 @@
# MQ 改造方案(评审稿)
# MQ 改造方案(评审稿)
## 1. 背景与目标
你当前的业务策略是:
@@ -26,16 +26,13 @@
当前 `rdms-spring-boot-starter-mq` 的真实情况:
1. Redis 能力最完整包含模板、监听器抽象、Stream 补偿与清理任务。
2. RabbitMQ 只有 `MessageConverter` 级别自动配置,未形成统一收发抽象。
3. RocketMQ、Kafka 在该 starter 中没有对应自动配置主链路,实际接入主要在 WebSocket 模块。
当前 `rdms-system` 默认配置:
1. `rdms.websocket.sender-type: local`,即默认并未走 MQ 分发链路。
## 3. 改造原则
1. 先配置统一,再接口统一,最后再清理非主路径。
2. 任何阶段都必须可回滚,且回滚只改配置不改代码。
3. 保持 Rabbit/Kafka 包路径存在,避免一次性大删导致历史分支合并困难。
4. 先让 WebSocket 场景打通可切换,再考虑扩展到业务 MQ。
## 4. 目标架构(落地后)
统一引入配置:
@@ -44,10 +41,8 @@
统一行为:
1. 单体环境配 `redis`
2. 微服务环境配 `rocketmq`
3. WebSocket `sender-type` 跟随 `rdms.mq.type`,避免双配置。
建议方式:
1. `rdms.websocket.sender-type: ${rdms.mq.type}`
## 4.1 配置矩阵(最小可运行)
@@ -56,8 +51,6 @@
rdms:
mq:
type: redis
websocket:
sender-type: ${rdms.mq.type}
spring:
data:
@@ -71,8 +64,6 @@ spring:
rdms:
mq:
type: rocketmq
websocket:
sender-type: ${rdms.mq.type}
rocketmq:
name-server: 127.0.0.1:9876
@@ -102,7 +93,6 @@ rocketmq:
实施项:
1. 新增配置项 `rdms.mq.type`,默认值 `redis`
2. 修改环境配置,使 `rdms.websocket.sender-type` 引用 `rdms.mq.type`
3. 本阶段不删除 Rabbit/Kafka 代码,不变更包结构。
收益:
@@ -110,7 +100,6 @@ rocketmq:
2. 不触碰核心业务逻辑,风险最低。
回滚:
1.`rdms.websocket.sender-type` 改回固定值即可。
## 阶段 B中风险接口统一
目标:抽象统一 MQ 发送接口,减少业务对具体中间件的耦合。
@@ -119,7 +108,6 @@ rocketmq:
1. 新增统一接口,例如 `UnifiedMqSender`
2. 提供 `RedisMqSender``RocketMqSender` 两个实现。
3.`@ConditionalOnProperty` 根据 `rdms.mq.type` 注入唯一实现。
4. 在 WebSocket 发送链路优先替换为统一接口调用。
5. 统一消息契约,至少包含标准消息头:
`msgId``bizKey``timestamp``producer``traceId``version`
@@ -149,7 +137,6 @@ rocketmq:
## 6. 影响面评估
主要影响模块:
1. `rdms-framework/rdms-spring-boot-starter-mq`
2. `rdms-framework/rdms-spring-boot-starter-websocket`
3. `rdms-system/rdms-system-boot` 配置文件
主要风险点:
@@ -182,7 +169,6 @@ rocketmq:
## 7. 验收清单(每阶段都要过)
1. 单体环境 `rdms.mq.type=redis` 可启动、可发送、可消费。
2. 微服务环境 `rdms.mq.type=rocketmq` 可启动、可发送、可消费。
3. WebSocket 在两种模式下都能完成跨实例消息投递。
4. 关键链路日志可定位发送端与消费端。
5. 切换只改配置,不改代码。
6. 回滚路径已验证。
@@ -224,7 +210,6 @@ rocketmq:
3. 关键业务出现重复消费副作用。
回滚动作:
1. 只回滚 `rdms.mq.type``rdms.websocket.sender-type` 配置。
2. 不回滚代码,确保恢复路径最短。
## 9. 当前建议