feat(GOV-008): 采用 RocketMQ 消息队列架构

This commit is contained in:
2026-08-13 14:22:50 +08:00
parent 3cc00de8f6
commit f5994ad77e
34 changed files with 463 additions and 43 deletions
+7 -5
View File
@@ -7,8 +7,8 @@
```text
web/ Vue 3 前端
server/ NestJS API、Scheduler 与 Worker
contracts/ HTTP 与 RabbitMQ 版本化契约
deploy/ MySQL、Redis、RabbitMQ 和运行配置
contracts/ HTTP 与 RocketMQ 版本化契约
deploy/ MySQL、Redis、RocketMQ 5.x 和运行配置
docs/ 规范、架构、ADR 与功能档案
tools/ 可重复执行的治理和开发工具
```
@@ -20,7 +20,8 @@ tools/ 可重复执行的治理和开发工具
```text
免费数据源
→ Scheduler 定时投递
→ RabbitMQ
→ MessageBusAdapter
→ RocketMQ 5.x
→ 行情采集 Worker
→ 指标计算 Worker
→ 规则 / AI / 混合分析
@@ -30,7 +31,8 @@ tools/ 可重复执行的治理和开发工具
```
- Scheduler只负责触发时间。
- RabbitMQ只负责任务传递、确认、重试和死信。
- MessageBusAdapter 隔离业务与 RocketMQ 客户端,禁止业务模块直接依赖 SDK。
- RocketMQ 只负责任务传递、确认、重试、延迟消息和死信;重复投递由 Worker 幂等处理。
- Worker负责采集、标准化、计算和分析。
- MySQL保存可追溯事实与历史报告。
- Redis保存最新快照、缓存、锁和限流状态。
@@ -52,7 +54,7 @@ tools/ 可重复执行的治理和开发工具
- 应用运行环境只定义 `development` 与 `production`;生产环境禁止模拟数据、热更新、调试端口和开发默认值回退。
- API、Scheduler、Worker、Web 分别拥有开发和生产模板;同一进程跨环境使用相同变量名,通过启动 Schema 校验条件必填项。
- 本地开发使用 Docker Compose 只启动 Redis,应用进程从源码运行;第一阶段 MySQL 与 RabbitMQ 保持关闭。
- 本地开发使用 Docker Compose 只启动 Redis,应用进程从源码运行;第一阶段 MySQL 与 RocketMQ 保持关闭。需要联调时可以连接本机独立运行的 RocketMQ 5.x。
- 生产同时支持 Docker Compose 和 Ubuntu 22.04/24.04 LTS x86_64 源码部署,两者共用配置契约和进程边界。
- 源码部署由管理员预装 Node.js 22 LTS、pnpm 10、Nginx 和基础设施;项目只验证,不安装或修改系统软件源。
- 源码部署使用不可变发布目录、`a-share` 用户和 systemd 独立进程配置;生产 env 存放在 `/etc/a-share-analysis/`,不随代码版本切换覆盖。