123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- package main
- import (
- mgrpc "github.com/go-micro/plugins/v4/client/grpc"
- "github.com/go-micro/plugins/v4/registry/consul"
- mhttp "github.com/go-micro/plugins/v4/server/http"
- "github.com/redis/go-redis/v9"
- "github.com/sirupsen/logrus"
- "go-micro.dev/v4"
- "go-micro.dev/v4/logger"
- "go-micro.dev/v4/registry"
- "go.opentelemetry.io/otel"
- "go.opentelemetry.io/otel/propagation"
- "golang.org/x/net/context"
- "os"
- "sghgogs.com/sghblog/authorization-client/config"
- "sghgogs.com/sghblog/authorization-client/router"
- "sghgogs.com/sghblog/authorization-client/utils/authutil"
- "sghgogs.com/sghblog/authorization-client/utils/tracing"
- "time"
- )
- const (
- name = "authorizationclient"
- version = "1.0.0"
- )
- // @title Swagger Example API
- // @version 1.0
- // @description This is a sample server celler server.
- // @termsOfService http://swagger.io/terms/
- // @contact.name API Support
- // @contact.url http://www.swagger.io/support
- // @contact.email support@swagger.io
- // @license.name Apache 2.0
- // @license.url http://www.apache.org/licenses/LICENSE-2.0.html
- // @host localhost:8080
- // @BasePath /v1/api
- // @securityDefinitions.basic BasicAuth
- // @externalDocs.description OpenAPI
- // @externalDocs.url https://swagger.io/resources/open-api/
- func main() {
- if err := config.Load(); err != nil {
- logger.Fatal(err)
- }
- if cfg := config.RedisAddress(); cfg.Enable {
- authutil.NewJWTAuth(redis.NewClient(&redis.Options{
- Addr: cfg.URL, // Redis 服务器地址
- Password: cfg.Password, // Redis 密码,如果有的话
- DB: 0, // 默认数据库
- }), name, cfg.Enable)
- }
- srv := micro.NewService(
- micro.Server(mhttp.NewServer()),
- micro.Client(mgrpc.NewClient()),
- )
- authService := authutil.JWTAuthService.Auth
- opts := []micro.Option{
- micro.Name(name),
- micro.Version(version),
- micro.Address(config.Address()),
- micro.Auth(
- authService,
- ),
- }
- if cfg := config.Tracing(); cfg.Enable {
- tp, err := tracing.NewTracerProvider(name, version, srv.Server().Options().Id, cfg.Jaeger.URL)
- if err != nil {
- logger.Fatal(err)
- }
- defer func() {
- ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
- defer cancel()
- if err := tp.Shutdown(ctx); err != nil {
- logger.Fatal(err)
- }
- }()
- otel.SetTracerProvider(tp)
- otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}))
- }
- if cfg := config.Registry(); cfg.Enable {
- logrus.Info("注册中心")
- consul := consul.NewRegistry(func(options *registry.Options) {
- options.Addrs = []string{
- cfg.Consul.URL,
- }
- })
- opts = append(opts, micro.Registry(consul))
- }
- srv.Init(opts...)
- log := logrus.New()
- log.Level = logrus.DebugLevel
- log.Formatter = &logrus.JSONFormatter{
- FieldMap: logrus.FieldMap{
- logrus.FieldKeyTime: "timestamp",
- logrus.FieldKeyLevel: "severity",
- logrus.FieldKeyMsg: "message",
- },
- TimestampFormat: time.RFC3339Nano,
- }
- log.Out = os.Stdout
- cfg, client := config.Get(), srv.Client()
- if err := micro.RegisterHandler(srv.Server(), router.NewRouter(
- cfg.AuthorizationService,
- client,
- )); err != nil {
- logger.Fatal(err)
- }
- logrus.Info("Run server")
- if err := srv.Run(); err != nil {
- logger.Fatal("run", err)
- }
- }
|