main.go 950 Bytes
Newer Older
kzkzzzz's avatar
kzkzzzz committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
package main

import (
	"flag"
	"fmt"
	"golang.org/x/sync/errgroup"
	"grpc-base/common/logger"
	"grpc-base/service/testuser/internal/conf"
	"grpc-base/service/testuser/internal/dao"
	"grpc-base/service/testuser/internal/server"
	"grpc-base/service/testuser/internal/service"
	"os"
	"os/signal"
	"syscall"
)

func main() {
	flag.Parse()

	conf.LoadConfig()

	logger.Init(conf.Conf.Log)
	defer logger.Flush()

	d := dao.New(conf.Conf)

	svc := service.New(d)

	eg := errgroup.Group{}
	eg.Go(func() error {
		return server.NewGrpcServer(conf.Conf, svc)
	})

	eg.Go(func() error {
		ch := make(chan os.Signal, 1)
		signal.Notify(ch, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
		v := <-ch
		fmt.Printf("\n捕获信号: %v\n", v)
		//time.Sleep(time.Millisecond * 600)
		server.GracefulStopGrpc()
		return nil
	})

	logger.Infof("%s", "server start")

	if err := eg.Wait(); err != nil {
		logger.Error(err)
	}

	logger.Info("end")
}