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  }