feat(msg): 完整实现 msg 消息服务

包含 channels/preferences/templates/grpc/kafka/outbox/push/redis 等完整实现
This commit is contained in:
SpecialX
2026-07-10 19:09:52 +08:00
parent 21530dc7f6
commit 7b7abbb309
51 changed files with 5204 additions and 371 deletions

View File

@@ -1,14 +1,27 @@
import { z } from "zod";
/**
* msg 服务环境变量 schema。
*
* 仲裁依据:
* - G2 /readyz 多依赖检查DB/ES/Redis/Kafka/PushGateway
* - M2 PushGateway 软失败PUSH_GATEWAY_URL 可选)
* - M4 HTTP POST /internal/push豁免 gRPC
* - REDIS_URL 可选,未配置时降级到 DB 唯一索引去重
*/
const envSchema = z.object({
PORT: z.string().default("3007"),
GRPC_PORT: z.string().default("50056"),
DATABASE_URL: z.string().url(),
REDIS_URL: z.string().url().optional(),
JWT_SECRET: z.string().optional(),
JWT_ISSUER: z.string().default("next-edu-cloud"),
KAFKA_BROKERS: z.string().default("localhost:9092"),
KAFKA_CLIENT_ID: z.string().default("msg-service"),
KAFKA_CONSUMER_GROUP_ID: z.string().default("msg-service-group"),
ES_URL: z.string().url().optional(),
PUSH_GATEWAY_URL: z.string().url().optional(),
PUSH_INTERNAL_TOKEN: z.string().optional(),
OTEL_EXPORTER_OTLP_ENDPOINT: z.string().url().optional(),
LOG_LEVEL: z
.enum(["fatal", "error", "warn", "info", "debug", "trace"])