You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.9 KiB
78 lines
1.9 KiB
package main
|
|
|
|
import (
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"laic-backend/cache"
|
|
"laic-backend/common"
|
|
"laic-backend/logger"
|
|
"laic-backend/mqtt"
|
|
"laic-backend/route"
|
|
"laic-backend/service"
|
|
"laic-backend/token"
|
|
)
|
|
|
|
func main() {
|
|
// 1. 初始化日志(先用默认配置,便于后续报错输出)
|
|
logger.InitCustomLog(logger.Level_D, nil, "laic-backend")
|
|
|
|
// 2. 加载 config.yaml
|
|
configPath := os.Getenv("LAIC_CONFIG_FILE")
|
|
if configPath == "" {
|
|
configPath = "config.yaml"
|
|
}
|
|
conf := &common.AppConfig{}
|
|
common.LoadConfig(configPath, conf)
|
|
if err := service.InitLiveProvider(conf.Live); err != nil {
|
|
logger.ERROR("直播提供商初始化失败", err)
|
|
panic(err)
|
|
}
|
|
if err := service.InitSimboss(conf.Simboss); err != nil {
|
|
logger.ERROR("SIMBOSS 初始化失败", err)
|
|
panic(err)
|
|
}
|
|
if err := service.InitAGPay(conf.AGPay); err != nil {
|
|
logger.ERROR("AGPay 初始化失败", err)
|
|
panic(err)
|
|
}
|
|
setLogLevel(conf.Log.Level)
|
|
token.Init(conf.JWT.Secret, conf.JWT.AccessExpireH, conf.JWT.RefreshExpireH)
|
|
|
|
// 3. 初始化基础设施
|
|
common.InitConnection(&conf.Mysql)
|
|
common.InitTDengine(&conf.TDengine)
|
|
common.InitRedis(conf.Redis)
|
|
|
|
// 4. 预热缓存 + 启动遥测批量写入
|
|
cache.WarmUp()
|
|
service.DefaultTelemetryStore.Start()
|
|
|
|
// 5. 启动 MQTT(订阅设备上行消息)与 HTTP
|
|
mqtt.InitMQTT(&conf.MQTT)
|
|
service.InitMQTTSubscriber()
|
|
service.DefaultCommandService.StartRetryScanner()
|
|
service.DefaultScheduler.Start()
|
|
route.InitRouter(int32(conf.ApiPort))
|
|
logger.INFO("laic-backend starting on port:", conf.ApiPort)
|
|
common.ServerRun(int32(conf.ApiPort))
|
|
|
|
// 5. 优雅退出
|
|
quit := make(chan os.Signal, 1)
|
|
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
|
<-quit
|
|
}
|
|
|
|
func setLogLevel(level string) {
|
|
switch level {
|
|
case "info":
|
|
logger.SetLevel(logger.Level_I)
|
|
case "warn":
|
|
logger.SetLevel(logger.Level_W)
|
|
case "error":
|
|
logger.SetLevel(logger.Level_E)
|
|
default:
|
|
logger.SetLevel(logger.Level_D)
|
|
}
|
|
}
|
|
|