package main import ( "context" "flag" "net/http" _ "net/http/pprof" "os" "os/signal" "syscall" "vamicro/api-gateway/auth" "vamicro/api-gateway/client" "vamicro/api-gateway/models" "vamicro/api-gateway/service" "vamicro/api-gateway/traces" "vamicro/config" "basic.com/valib/logc.git" "basic.com/valib/logger.git" "basic.com/valib/version.git" "github.com/gin-gonic/gin" ) var ( procName = service.ProcName env = flag.String("e", "pro", "") ) func init() { flag.Parse() vaversion.Usage() config.Init(*env) // 日志初始化 var logFile = config.LogConf.Path + "vamicro-" + procName + ".log" logger.InitLogger(logFile, config.LogConf.Level, config.LogConf.MaxSize, config.LogConf.MaxBackups, config.LogConf.MaxAge) logger.Info("log init success !") } func main() { // pprof 用于分析性能 go func() { logger.Info(http.ListenAndServe("0.0.0.0:6077", nil)) }() models.Init() defer models.CloseDB() ctx, cancel := context.WithCancel(context.Background()) q := make(chan os.Signal, 1) signal.Notify(q, os.Interrupt, os.Kill, syscall.SIGTERM) signal.Ignore(syscall.SIGPIPE) client, err := client.NewClient(ctx, q) logger.Debug("client:", client) if err == nil { traces.Init(func(para *logc.LogRegister) { client.PublishNetTimeout(para.Nodes, para.Topic, para.Payload, 1000) }) auth.Oauth2Init() //授权检查 暂时关闭 //util.AuthCheck(ctx) go func() { r := gin.Default() //授权检查 暂时关闭 //r.Use(auth.AuthHandler()) r.Any("/data/*any", client.AnyRequest) r.Run("0.0.0.0:8888") }() go client.ModuleMapInit() <-q logger.Debug("exit api-gateway") traces.DeInit() client.DeRegister() cancel() client.Free() logger.Debug("Release done") } else { logger.Debug("client is nil") } }