11package main
22
33import (
4- // "net/http"
5-
64 "github.com/micro/go-micro/v2"
5+ "github.com/micro/go-micro/v2/client"
6+ "github.com/micro/go-micro/v2/server"
77 "github.com/rs/zerolog/log"
8- //"github.com/soheilhy/cmux"
9- //"google.golang.org/grpc"
10- //"google.golang.org/grpc/health"
11- //"google.golang.org/grpc/health/grpc_health_v1"
12-
13- //sgrpc "github.com/micro/go-micro/v2/server/grpc"
148
159 "github.com/xmlking/micro-starter-kit/service/greeter/handler"
1610 greeterPB "github.com/xmlking/micro-starter-kit/service/greeter/proto/greeter"
1711 healthPB "github.com/xmlking/micro-starter-kit/service/greeter/proto/health"
1812 "github.com/xmlking/micro-starter-kit/shared/config"
1913 "github.com/xmlking/micro-starter-kit/shared/constants"
20- "github.com/xmlking/micro-starter-kit/shared/util/tls "
14+ myMicro "github.com/xmlking/micro-starter-kit/shared/util/micro "
2115 logWrapper "github.com/xmlking/micro-starter-kit/shared/wrapper/log"
2216 transWrapper "github.com/xmlking/micro-starter-kit/shared/wrapper/transaction"
17+ validatorWrapper "github.com/xmlking/micro-starter-kit/shared/wrapper/validator"
2318)
2419
2520func main () {
26- serviceName := constants .GREETER_SERVICE
2721 cfg := config .GetConfig ()
2822
29- // lis, err := config.GetListener(cfg.Services.Greeter.Endpoint)
30- // if err != nil {
31- // log.Fatal().Msgf("failed to create listener: %v", err)
32- // }
33-
34- // Create a cmux.
35- // mux := cmux.New(lis)
36- // Match connections in order:
37- // grpcL := mux.Match(cmux.HTTP2HeaderField("content-type", "application/grpc"))
38- // httpL := mux.Match(cmux.HTTP1Fast())
39-
40- // New Service
41- service := micro .NewService (
42- // Using grpc listener created by cmux
43- // micro.Server(sgrpc.NewServer(sgrpc.Listener(grpcL))), // FIXME: MUST KEEP-IT-FIRST
44- micro .Name (serviceName ),
45- micro .Version (config .Version ),
46- )
47-
4823 // Initialize Features
49- var options []micro.Option
50-
51- if cfg .Features .Tls .Enabled {
52- if tlsConf , err := config .CreateServerCerts (); err != nil {
53- log .Error ().Err (err ).Msg ("unable to load certs" )
54- } else {
55- log .Info ().Msg ("TLS Enabled" )
56- options = append (options , tls .WithTLS (tlsConf ))
57- }
58- }
24+ var clientWrappers []client.Wrapper
25+ var handlerWrappers []server.HandlerWrapper
26+ var subscriberWrappers []server.SubscriberWrapper
5927
6028 // Wrappers are invoked in the order as they added
6129 if cfg .Features .Reqlogs .Enabled {
62- options = append (options , micro .WrapHandler (logWrapper .NewHandlerWrapper ()))
30+ clientWrappers = append (clientWrappers , logWrapper .NewClientWrapper ())
31+ handlerWrappers = append (handlerWrappers , logWrapper .NewHandlerWrapper ())
32+ subscriberWrappers = append (subscriberWrappers , logWrapper .NewSubscriberWrapper ())
6333 }
64- if cfg .Features .Translogs .Enabled {
65- topic := cfg .Features .Translogs .Topic
66- publisher := micro .NewEvent (topic , service .Client ())
67- options = append (options , micro .WrapHandler (transWrapper .NewHandlerWrapper (publisher )))
34+ //if cfg.Features.Translogs.Enabled {
35+ // topic := cfg.Features.Translogs.Topic
36+ // publisher := micro.NewEvent(topic, client.DefaultClient) // service.Client())
37+ // handlerWrappers = append(handlerWrappers, transWrapper.NewHandlerWrapper(publisher))
38+ // subscriberWrappers = append(subscriberWrappers, transWrapper.NewSubscriberWrapper(publisher))
39+ //}
40+ if cfg .Features .Validator .Enabled {
41+ handlerWrappers = append (handlerWrappers , validatorWrapper .NewHandlerWrapper ())
42+ subscriberWrappers = append (subscriberWrappers , validatorWrapper .NewSubscriberWrapper ())
6843 }
6944
70- // Adding some optional lifecycle actions
71- options = append (options ,
45+ service := micro .NewService (
46+ micro .Name (constants .GREETER_SERVICE ),
47+ micro .Version (config .Version ),
48+ myMicro .WithTLS (),
49+ // Wrappers are applied in reverse order so the last is executed first.
50+ micro .WrapClient (clientWrappers ... ),
51+ // Adding some optional lifecycle actions
7252 micro .BeforeStart (func () (err error ) {
7353 log .Debug ().Msg ("called BeforeStart" )
7454 return
@@ -77,40 +57,26 @@ func main() {
7757 log .Debug ().Msg ("called BeforeStop" )
7858 return
7959 }),
80- micro .AfterStart (func () (err error ) {
81- log .Debug ().Msg ("called AfterStart" )
82- // Start cmux after go-micro starts
83- // return mux.Serve()
84- return
85- }),
8660 )
8761
88- // Initialize service
89- service .Init (options ... )
62+ if cfg .Features .Translogs .Enabled {
63+ topic := cfg .Features .Translogs .Topic
64+ publisher := micro .NewEvent (topic , service .Client ())
65+ handlerWrappers = append (handlerWrappers , transWrapper .NewHandlerWrapper (publisher ))
66+ subscriberWrappers = append (subscriberWrappers , transWrapper .NewSubscriberWrapper (publisher ))
67+ }
9068
91- // Register http Handlers
92- // httpS := &http.Server{
93- // Handler: handler.NewHttpHandler( ),
94- // }
69+ service . Init (
70+ micro . WrapHandler ( handlerWrappers ... ),
71+ micro . WrapSubscriber ( subscriberWrappers ... ),
72+ )
9573
96- // Register grpc Handlers
97- /**
98- grpcS := grpc.NewServer()
99- hsrv := health.NewServer()
100- for name, _ := range grpcS.GetServiceInfo() {
101- hsrv.SetServingStatus(name, grpc_health_v1.HealthCheckResponse_SERVING)
102- }
103- grpc_health_v1.RegisterHealthServer(grpcS, hsrv)
104- **/
10574 _ = healthPB .RegisterHealthHandler (service .Server (), handler .NewHealthHandler ())
10675 _ = greeterPB .RegisterGreeterServiceHandler (service .Server (), handler .NewGreeterHandler ())
10776
10877 println (config .GetBuildInfo ())
10978
110- // Run http servers.
111- // go httpS.Serve(httpL)
112-
113- // Run grpc service
79+ // Run service
11480 if err := service .Run (); err != nil {
11581 log .Fatal ().Err (err ).Send ()
11682 }
0 commit comments