package main import ( "context" "log" "os" "os/signal" "time" server "user-srv/Server" "user-srv/config" "user-srv/mysql" "user-srv/redis" "github.com/joho/godotenv" "github.com/sirupsen/logrus" ) func main() { //加载.env文件-给环境变量赋值,在线版本需注释-不使用 err := godotenv.Load() if err != nil { log.Fatal(err) } // 初始化 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 { //初始化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 } //初始化mysql // mysql初始化 mysql.Init(&mysql.Config{ ConnString: os.Getenv("MYSQL_DSN"), 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 } //初始化grpc go server.StartGrpcServer() // 初始化consul if err := server.ConsulGrpc(); err != nil { return err } //初始化 grpc-gateway return server.StartGwServer() }