Skip to content

Commit 6e006f7

Browse files
committed
refactor(core): order go-micro bootstraping
1 parent 8338140 commit 6e006f7

File tree

8 files changed

+208
-201
lines changed

8 files changed

+208
-201
lines changed

service/account/main.go

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package main
22

33
import (
44
"github.com/micro/go-micro/v2"
5+
"github.com/micro/go-micro/v2/client"
6+
"github.com/micro/go-micro/v2/server"
57
"github.com/rs/zerolog/log"
68

79
"github.com/xmlking/micro-starter-kit/service/account/handler"
@@ -12,52 +14,44 @@ import (
1214
greeterPB "github.com/xmlking/micro-starter-kit/service/greeter/proto/greeter"
1315
"github.com/xmlking/micro-starter-kit/shared/config"
1416
"github.com/xmlking/micro-starter-kit/shared/constants"
15-
"github.com/xmlking/micro-starter-kit/shared/util/tls"
17+
myMicro "github.com/xmlking/micro-starter-kit/shared/util/micro"
1618
logWrapper "github.com/xmlking/micro-starter-kit/shared/wrapper/log"
1719
transWrapper "github.com/xmlking/micro-starter-kit/shared/wrapper/transaction"
1820
validatorWrapper "github.com/xmlking/micro-starter-kit/shared/wrapper/validator"
1921
)
2022

2123
func main() {
22-
serviceName := constants.ACCOUNT_SERVICE
2324
cfg := config.GetConfig()
2425

25-
// New Service
26-
service := micro.NewService(
27-
micro.Name(serviceName),
28-
micro.Version(config.Version),
29-
)
30-
3126
// Initialize Features
32-
var options []micro.Option
33-
34-
if cfg.Features.Tls.Enabled {
35-
if tlsConf, err := config.CreateServerCerts(); err != nil {
36-
log.Error().Err(err).Msg("unable to load certs")
37-
} else {
38-
log.Info().Msg("TLS Enabled")
39-
options = append(options, tls.WithTLS(tlsConf))
40-
}
41-
}
27+
var clientWrappers []client.Wrapper
28+
var handlerWrappers []server.HandlerWrapper
29+
var subscriberWrappers []server.SubscriberWrapper
4230

4331
// Wrappers are invoked in the order as they added
4432
if cfg.Features.Reqlogs.Enabled {
45-
options = append(options,
46-
micro.WrapHandler(logWrapper.NewHandlerWrapper()),
47-
micro.WrapClient(logWrapper.NewClientWrapper()),
48-
)
49-
}
50-
if cfg.Features.Translogs.Enabled {
51-
topic := cfg.Features.Translogs.Topic
52-
publisher := micro.NewEvent(topic, service.Client())
53-
options = append(options, micro.WrapHandler(transWrapper.NewHandlerWrapper(publisher)))
33+
clientWrappers = append(clientWrappers, logWrapper.NewClientWrapper())
34+
handlerWrappers = append(handlerWrappers, logWrapper.NewHandlerWrapper())
35+
subscriberWrappers = append(subscriberWrappers, logWrapper.NewSubscriberWrapper())
5436
}
37+
//if cfg.Features.Translogs.Enabled {
38+
// topic := cfg.Features.Translogs.Topic
39+
// publisher := micro.NewEvent(topic, client.DefaultClient) // service.Client())
40+
// handlerWrappers = append(handlerWrappers, transWrapper.NewHandlerWrapper(publisher))
41+
// subscriberWrappers = append(subscriberWrappers, transWrapper.NewSubscriberWrapper(publisher))
42+
//}
5543
if cfg.Features.Validator.Enabled {
56-
options = append(options, micro.WrapHandler(validatorWrapper.NewHandlerWrapper()))
44+
handlerWrappers = append(handlerWrappers, validatorWrapper.NewHandlerWrapper())
45+
subscriberWrappers = append(subscriberWrappers, validatorWrapper.NewSubscriberWrapper())
5746
}
5847

59-
// Adding some optional lifecycle actions
60-
options = append(options,
48+
service := micro.NewService(
49+
micro.Name(constants.ACCOUNT_SERVICE),
50+
micro.Version(config.Version),
51+
myMicro.WithTLS(),
52+
// Wrappers are applied in reverse order so the last is executed first.
53+
micro.WrapClient(clientWrappers...),
54+
// Adding some optional lifecycle actions
6155
micro.BeforeStart(func() (err error) {
6256
log.Debug().Msg("called BeforeStart")
6357
return
@@ -68,8 +62,17 @@ func main() {
6862
}),
6963
)
7064

71-
// Initialize service
72-
service.Init(options...)
65+
if cfg.Features.Translogs.Enabled {
66+
topic := cfg.Features.Translogs.Topic
67+
publisher := micro.NewEvent(topic, service.Client())
68+
handlerWrappers = append(handlerWrappers, transWrapper.NewHandlerWrapper(publisher))
69+
subscriberWrappers = append(subscriberWrappers, transWrapper.NewSubscriberWrapper(publisher))
70+
}
71+
72+
service.Init(
73+
micro.WrapHandler(handlerWrappers...),
74+
micro.WrapSubscriber(subscriberWrappers...),
75+
)
7376

7477
// Initialize DI Container
7578
ctn, err := registry.NewContainer(cfg)
@@ -78,8 +81,6 @@ func main() {
7881
log.Fatal().Msgf("failed to build container: %v", err)
7982
}
8083

81-
log.Debug().Msgf("Client type: grpc or regular? %T\n", service.Client()) // FIXME: expected *grpc.grpcClient but got *micro.clientWrapper
82-
8384
// Publisher publish to "mkit.service.emailer"
8485
publisher := micro.NewEvent(constants.EMAILER_SERVICE, service.Client())
8586
// greeterSrv Client to call "mkit.service.greeter"

service/emailer/main.go

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,52 +2,52 @@ package main
22

33
import (
44
"github.com/micro/go-micro/v2"
5+
"github.com/micro/go-micro/v2/client"
6+
"github.com/micro/go-micro/v2/server"
57
"github.com/rs/zerolog/log"
68

79
"github.com/xmlking/micro-starter-kit/shared/constants"
810

911
"github.com/xmlking/micro-starter-kit/service/emailer/registry"
1012
"github.com/xmlking/micro-starter-kit/shared/config"
11-
"github.com/xmlking/micro-starter-kit/shared/util/tls"
13+
myMicro "github.com/xmlking/micro-starter-kit/shared/util/micro"
1214
logWrapper "github.com/xmlking/micro-starter-kit/shared/wrapper/log"
1315
transWrapper "github.com/xmlking/micro-starter-kit/shared/wrapper/transaction"
14-
// "github.com/xmlking/micro-starter-kit/service/emailer/subscriber"
16+
validatorWrapper "github.com/xmlking/micro-starter-kit/shared/wrapper/validator"
1517
)
1618

1719
func main() {
18-
serviceName := constants.EMAILER_SERVICE
1920
cfg := config.GetConfig()
2021

21-
// New Service
22-
service := micro.NewService(
23-
micro.Name(serviceName),
24-
micro.Version(config.Version),
25-
)
26-
2722
// Initialize Features
28-
var options []micro.Option
29-
30-
if cfg.Features.Tls.Enabled {
31-
if tlsConf, err := config.CreateServerCerts(); err != nil {
32-
log.Error().Err(err).Msg("unable to load certs")
33-
} else {
34-
log.Info().Msg("TLS Enabled")
35-
options = append(options, tls.WithTLS(tlsConf))
36-
}
37-
}
23+
var clientWrappers []client.Wrapper
24+
var handlerWrappers []server.HandlerWrapper
25+
var subscriberWrappers []server.SubscriberWrapper
3826

3927
// Wrappers are invoked in the order as they added
4028
if cfg.Features.Reqlogs.Enabled {
41-
options = append(options, micro.WrapSubscriber(logWrapper.NewSubscriberWrapper()))
29+
clientWrappers = append(clientWrappers, logWrapper.NewClientWrapper())
30+
handlerWrappers = append(handlerWrappers, logWrapper.NewHandlerWrapper())
31+
subscriberWrappers = append(subscriberWrappers, logWrapper.NewSubscriberWrapper())
4232
}
43-
if cfg.Features.Translogs.Enabled {
44-
topic := cfg.Features.Translogs.Topic
45-
publisher := micro.NewEvent(topic, service.Client())
46-
options = append(options, micro.WrapSubscriber(transWrapper.NewSubscriberWrapper(publisher)))
33+
//if cfg.Features.Translogs.Enabled {
34+
// topic := cfg.Features.Translogs.Topic
35+
// publisher := micro.NewEvent(topic, client.DefaultClient) // service.Client())
36+
// handlerWrappers = append(handlerWrappers, transWrapper.NewHandlerWrapper(publisher))
37+
// subscriberWrappers = append(subscriberWrappers, transWrapper.NewSubscriberWrapper(publisher))
38+
//}
39+
if cfg.Features.Validator.Enabled {
40+
handlerWrappers = append(handlerWrappers, validatorWrapper.NewHandlerWrapper())
41+
subscriberWrappers = append(subscriberWrappers, validatorWrapper.NewSubscriberWrapper())
4742
}
4843

49-
// Adding some optional lifecycle actions
50-
options = append(options,
44+
service := micro.NewService(
45+
micro.Name(constants.EMAILER_SERVICE),
46+
micro.Version(config.Version),
47+
myMicro.WithTLS(),
48+
// Wrappers are applied in reverse order so the last is executed first.
49+
micro.WrapClient(clientWrappers...),
50+
// Adding some optional lifecycle actions
5151
micro.BeforeStart(func() (err error) {
5252
log.Debug().Msg("called BeforeStart")
5353
return
@@ -58,8 +58,17 @@ func main() {
5858
}),
5959
)
6060

61-
// Initialize service
62-
service.Init(options...)
61+
if cfg.Features.Translogs.Enabled {
62+
topic := cfg.Features.Translogs.Topic
63+
publisher := micro.NewEvent(topic, service.Client())
64+
handlerWrappers = append(handlerWrappers, transWrapper.NewHandlerWrapper(publisher))
65+
subscriberWrappers = append(subscriberWrappers, transWrapper.NewSubscriberWrapper(publisher))
66+
}
67+
68+
service.Init(
69+
micro.WrapHandler(handlerWrappers...),
70+
micro.WrapSubscriber(subscriberWrappers...),
71+
)
6372

6473
// Initialize DI Container
6574
ctn, err := registry.NewContainer(cfg)

service/greeter/main.go

Lines changed: 37 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,54 @@
11
package main
22

33
import (
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

2520
func 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

Comments
 (0)