Files
mq-starter/README.md

47 lines
1.9 KiB
Markdown
Raw Normal View History

# 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`