github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/server/wrapper/main.go (about) 1 package main 2 3 import ( 4 "log" 5 6 "context" 7 "github.com/micro/go-micro/examples/server/handler" 8 "github.com/micro/go-micro/examples/server/subscriber" 9 "github.com/micro/go-micro/v2/config/cmd" 10 "github.com/micro/go-micro/v2/server" 11 ) 12 13 func logWrapper(fn server.HandlerFunc) server.HandlerFunc { 14 return func(ctx context.Context, req server.Request, rsp interface{}) error { 15 log.Printf("[Log Wrapper] Before serving request method: %v", req.Endpoint()) 16 err := fn(ctx, req, rsp) 17 log.Printf("[Log Wrapper] After serving request") 18 return err 19 } 20 } 21 22 func logSubWrapper(fn server.SubscriberFunc) server.SubscriberFunc { 23 return func(ctx context.Context, req server.Message) error { 24 log.Printf("[Log Sub Wrapper] Before serving publication topic: %v", req.Topic()) 25 err := fn(ctx, req) 26 log.Printf("[Log Sub Wrapper] After serving publication") 27 return err 28 } 29 } 30 31 func main() { 32 // optionally setup command line usage 33 cmd.Init() 34 35 md := server.DefaultOptions().Metadata 36 md["datacenter"] = "local" 37 38 server.DefaultServer = server.NewServer( 39 server.WrapHandler(logWrapper), 40 server.WrapSubscriber(logSubWrapper), 41 server.Metadata(md), 42 ) 43 44 // Initialise Server 45 server.Init( 46 server.Name("go.micro.srv.example"), 47 ) 48 49 // Register Handlers 50 server.Handle( 51 server.NewHandler( 52 new(handler.Example), 53 ), 54 ) 55 56 // Register Subscribers 57 if err := server.Subscribe( 58 server.NewSubscriber( 59 "topic.go.micro.srv.example", 60 new(subscriber.Example), 61 ), 62 ); err != nil { 63 log.Fatal(err) 64 } 65 66 if err := server.Subscribe( 67 server.NewSubscriber( 68 "topic.go.micro.srv.example", 69 subscriber.Handler, 70 ), 71 ); err != nil { 72 log.Fatal(err) 73 } 74 75 // Run server 76 if err := server.Run(); err != nil { 77 log.Fatal(err) 78 } 79 }