feat: 建立可靠通知、吊销与跨实例状态
This commit is contained in:
@@ -42,14 +42,24 @@ func main() {
|
||||
slog.Warn("IoTDB 初始化失败,将降级使用 PostgreSQL", "err", err)
|
||||
}
|
||||
|
||||
// 4. 连接 Redis(失败不阻断启动)
|
||||
// 4. 连接 Redis(失败不阻断启动,但认证/限流保守失败)
|
||||
var rdb *redis.Client
|
||||
if opt, err := redis.ParseURL(cfg.Redis); err == nil {
|
||||
rdb := redis.NewClient(opt)
|
||||
rdb = redis.NewClient(opt)
|
||||
if err := rdb.Ping(context.Background()).Err(); err != nil {
|
||||
slog.Warn("Redis 连接失败", "err", err)
|
||||
slog.Error("Redis 连接失败,认证/限流将保守失败", "err", err)
|
||||
_ = rdb.Close()
|
||||
rdb = nil
|
||||
} else {
|
||||
slog.Info("Redis 连接成功")
|
||||
}
|
||||
} else {
|
||||
slog.Error("Redis URL 解析失败,认证/限流将保守失败", "err", err)
|
||||
}
|
||||
if rdb != nil {
|
||||
middleware.InitState(middleware.NewRedisState(rdb), cfg.AppEnv)
|
||||
} else {
|
||||
middleware.InitState(nil, cfg.AppEnv)
|
||||
}
|
||||
|
||||
// 5. 创建 WebSocket Hub
|
||||
@@ -76,6 +86,11 @@ func main() {
|
||||
aiSvc := service.NewAIClient(cfg.AIServiceBase)
|
||||
wechatSvc := service.NewWechatService(cfg.WechatAppID, cfg.WechatSecret)
|
||||
weatherSvc := service.NewWeatherService(cfg.QWeatherAPIKey, cfg.QWeatherLocation)
|
||||
outbox := service.NewOutbox(db)
|
||||
outbox.SetHandler(service.NewWechatOutboxHandler(db, wechatSvc))
|
||||
outboxCtx, cancelOutbox := context.WithCancel(context.Background())
|
||||
defer cancelOutbox()
|
||||
outbox.Start(outboxCtx)
|
||||
|
||||
// 9. 创建 Gin 引擎
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
@@ -111,7 +126,7 @@ func main() {
|
||||
handler.RegisterVideoRecordRoutes(api, db, mediaSvc, cfg)
|
||||
handler.RegisterStorageRoutes(api, db)
|
||||
handler.RegisterKnowledgeRoutes(api, db, s3Svc, cfg.S3BucketImages)
|
||||
handler.RegisterInspectionRoutes(api, db, s3Svc, aiSvc, cfg.S3BucketImages, wechatSvc, cfg.WechatTemplateInspection, cfg.AppEnv)
|
||||
handler.RegisterInspectionRoutes(api, db, s3Svc, aiSvc, cfg.S3BucketImages, outbox, cfg.WechatTemplateInspection, cfg.AppEnv)
|
||||
handler.RegisterTrayBatchRoutes(api, db)
|
||||
handler.RegisterWechatRoutes(api, db, wechatSvc)
|
||||
handler.RegisterWeatherRoutes(api, db, weatherSvc)
|
||||
|
||||
Reference in New Issue
Block a user