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")
|
}
|
}
|