diff --git a/main.go b/main.go index 9f070bf7..651fb08a 100644 --- a/main.go +++ b/main.go @@ -3,7 +3,10 @@ package main import ( "fmt" "net/http" + "os" + "os/signal" "sync" + "syscall" "time" _ "net/http/pprof" @@ -146,6 +149,8 @@ func main() { src.ConfigurationInit() app := src.AppEngine() + fmt.Printf("OMC Service %s\n\n", config.Version) + src.DefeatConfig(app) loadGlobalPre(app) @@ -156,11 +161,27 @@ func main() { loadServerWeb() + stopSignal() + // 首次安装启动记录 machine.Launch() wg.Wait() } +// stopSignal 监听退出信号 +func stopSignal() { + sigCh := make(chan os.Signal, 1) + signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM) + wg.Add(1) + go func() { + defer wg.Done() + <-sigCh // 等待退出信号 + src.ConfigurationClose() + fmt.Println("\nStop Service... OK") + os.Exit(0) + }() +} + // loadGlobalPre 全局预加载 func loadGlobalPre(app *gin.Engine) { // Swagger 接口文档 @@ -185,6 +206,7 @@ func loadGlobalPre(app *gin.Engine) { go func(addr string) { defer wg.Done() for i := range maxRetries { + fmt.Printf("pprof HTTP on %s\n", addr) if err := http.ListenAndServe(addr, nil); err != nil { logger.Errorf("pprof run err:%v", err) time.Sleep(retryInterval) // 重试间隔时间 @@ -220,6 +242,7 @@ func loadServerRoute(app *gin.Engine) { go func(addr string, certFile string, keyFile string) { defer wg.Done() for i := range maxRetries { + fmt.Printf("API HTTPS on %s\n", addr) if err := app.RunTLS(addr, certFile, keyFile); err != nil { logger.Errorf("routeServer run tls err:%v", err) time.Sleep(retryInterval) // 重试间隔时间 @@ -233,6 +256,7 @@ func loadServerRoute(app *gin.Engine) { go func(addr string) { defer wg.Done() for i := range maxRetries { + fmt.Printf("API HTTP on %s\n", addr) if err := app.Run(addr); err != nil { logger.Errorf("routeServer run err:%v", err) time.Sleep(retryInterval) // 重试间隔时间 @@ -286,6 +310,7 @@ func loadServerWeb() { go func(addr string, certFile string, keyFile string) { defer wg.Done() for i := range maxRetries { + fmt.Printf("WEB HTTPS on %s\n", addr) if err := web.RunTLS(addr, certFile, keyFile); err != nil { logger.Errorf("webServer run tls err:%v", err) time.Sleep(retryInterval) // 重试间隔时间 @@ -302,6 +327,7 @@ func loadServerWeb() { go func(addr string) { defer wg.Done() for i := range maxRetries { + fmt.Printf("WEB HTTP on %s\n", addr) if err := web.Run(addr); err != nil { logger.Errorf("webServer run err:%v", err) time.Sleep(retryInterval) // 重试间隔时间