Files
Edu/services/msg
SpecialX 958b17c9d8 feat(infra): p6 hardening - metrics collection and registry mirror
- 4 services add collectDefaultMetrics for process metrics
- docker-compose.yml images prefixed with docker.m.daocloud.io
- Prometheus v0.51.0 (nonexistent) fixed to v2.51.0
- Grafana port remapped 3000 to 3030 to avoid teacher-portal conflict
- ClickHouse edu_analytics database initialized
- known-issues.md documents 7 new P6 scenario-to-rule mappings
2026-07-09 12:29:36 +08:00
..

Msg 消息通知服务

版本:0.1(P5 骨架) 端口:3007

职责

消息通知限界上下文,管理通知的多渠道分发(站内信、邮件、短信、推送)。 消费 Kafka 事件,写入 MySQL + Elasticsearch,调用 Push Gateway 实时推送。

技术栈

  • NestJS 10 + TypeScript 5
  • Drizzle ORM + MySQL 8
  • Elasticsearch 8(全文检索)
  • Kafka(事件消费,骨架)
  • pino + prom-client + OpenTelemetry

开发

pnpm install
pnpm dev   # http://localhost:3007

API

方法 路径 说明
POST /notifications 发送通知
GET /notifications 查询用户通知列表
POST /notifications/:id/read 标记已读
GET /notifications/search?q= 全文检索通知

健康检查

端点 用途 鉴权
GET /healthz 存活探针(liveness),仅返回进程状态,不检查依赖 无
GET /readyz 就绪探针(readiness),检查 DB 连接,失败返回 503 无

实现见 src/shared/health/health.controller.ts,5 个 NestJS 服务(iam/core-edu/content/msg/classes)一致。

环境变量

变量 默认值 说明
PORT 3007 服务端口
DATABASE_URL - MySQL 连接串
KAFKA_BROKERS localhost:9092 Kafka broker 列表
ES_URL http://localhost:9200 Elasticsearch 地址
JWT_SECRET - JWT 密钥