user-srv/main.go

84 lines
1.6 KiB
Go

package main
import (
"context"
"os"
"os/signal"
"time"
server "user-srv/Server"
"user-srv/config"
"user-srv/mysql"
"user-srv/redis"
"github.com/sirupsen/logrus"
)
func main() {
//初始化环境变量
config.ConfigInit()
// 初始化日志logrus
if err := runInit(); err != nil {
logrus.WithFields(logrus.Fields{
"func": "runInit()",
}).Warnf("runInit: %s", err.Error())
return
}
//优雅关停
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
<-c
_, cancel := context.WithTimeout(context.Background(), 15*time.Second)
defer cancel()
logrus.WithFields(logrus.Fields{
"func": "main",
}).Infof("user-srv service shutting down")
os.Exit(0)
}
//初始化资源
func runInit() error {
//初始化consul
if err := server.ConsulGrpc(); err != nil {
return err
}
//初始化mysql
// mysql初始化
mysql.Init(&mysql.Config{
ConnString: config.MYSQL_HOST,
ConnMaxLifetime: 5,
MaxIdleConns: 5,
MaxOpenConns: 100,
InitTable: true,
})
if err := mysql.InitTable(); err != nil {
logrus.WithFields(logrus.Fields{
"func": "runInit",
}).Warnf("mysql.InitTable:%v", err)
return err
}
//初始化redis
if err := redis.Init(&redis.Config{
Host: config.RedisHost,
Password: config.RedisPassword,
Database: config.RedisDB,
MaxIdle: 3,
MaxActive: 300,
IdleTimeout: 600,
}); err != nil {
logrus.WithFields(logrus.Fields{
"func": "runInit",
}).Warnf("redis.Init:%v", err)
return err
}
//初始化grpc
go server.StartGrpcServer()
//初始化 grpc-gateway
return server.StartGwServer()
}