# mq-starter — 统一 MQ 抽象层("MQ 界的 JDBC") 一个独立、全平台通用的 starter。业务配一行 `mq.type` 选底层(`rocketmq` | `redis-stream`), 只面向 starter 接口编程,不关心用哪个 MQ、不管理生产者消费者;换 MQ = 改配置,业务代码一行不动。 - 坐标 groupId:`com.njcn`,版本 `1.0.0-SNAPSHOT`(Phase 2 阶段本地 `mvn install`) - JDK 1.8 / Spring Boot 2.3.12.RELEASE / `META-INF/spring.factories` 自动装配 - **零业务依赖**:不依赖 `message-api` 等任何业务模块 ## 业务视角(对外契约) ```yaml mq: type: redis-stream # 或 rocketmq ``` ```java // 发 @Resource MqTemplate mq; mq.send("LN_Topic", payload); mq.send("File_Topic", nodeId, payload); // 带路由 key // 收(业务方法打注解,零 MQ 概念) @MqListener(topic = "LN_Topic", group = "ln_consumer") public void onFrontData(FrontData msg) { /* 纯业务 */ } ``` ## 模块结构 | 模块 | 职责 | |---|---| | `mq-starter-core` | 门面 `MqTemplate` + `@MqListener` 注解扫描 + 中立信封 `MqMessage` + driver SPI + 生命周期 | | `mq-starter-rocketmq` | rocket driver(基于官方 rocketmq-spring 编程式注册) | | `mq-starter-redis-stream` | redis driver(复用 `redis-stream-springboot-starter` 低层件,零改动 Phase 1) | | `mq-spring-boot-starter` | 聚合 jar,业务方只引这一个坐标 | ## 装配机制 `@ConditionalOnProperty("mq.type")` 静态二选一:两套 driver 各只在对应值下装配, 同一上下文只存在一个 `MqDriver` bean。 ## 关联设计 - 设计稿:`cn-data-platform/docs/superpowers/specs/2026-06-25-mq-starter-design.md` - 能力清单与轻量版范围:`cn-data-platform/docs/2026-06-25-mq-starter能力清单与轻量版范围.html` - 实现计划(轻量版 Phase 2):`cn-data-platform/docs/superpowers/plans/2026-06-25-mq-starter-轻量版-phase2.md`