集成必要性功能
This commit is contained in:
@@ -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. 当前建议
|
||||
|
||||
Reference in New Issue
Block a user