低空智控平台 后端go
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.
 
 

67 lines
1.6 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
conf := &common.AppConfig{}
common.LoadConfig("config.yaml", conf)
if err := service.InitLiveProvider(conf.Live); err != nil {
logger.ERROR("直播提供商初始化失败", 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.BootstrapOperationLog()
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)
}
}