github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/metadata/srv/main.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"time"
     7  
     8  	hello "github.com/micro/go-micro/examples/greeter/srv/proto/hello"
     9  	"github.com/micro/go-micro/v2"
    10  	"github.com/micro/go-micro/v2/metadata"
    11  
    12  	"context"
    13  )
    14  
    15  type Say struct{}
    16  
    17  func (s *Say) Hello(ctx context.Context, req *hello.Request, rsp *hello.Response) error {
    18  	md, ok := metadata.FromContext(ctx)
    19  	if !ok {
    20  		rsp.Msg = "No metadata received"
    21  		return nil
    22  	}
    23  	log.Printf("Received metadata %v\n", md)
    24  	rsp.Msg = fmt.Sprintf("Hello %s thanks for this %v", req.Name, md)
    25  	return nil
    26  }
    27  
    28  func main() {
    29  	service := micro.NewService(
    30  		micro.Name("go.micro.srv.greeter"),
    31  		micro.RegisterTTL(time.Second*30),
    32  		micro.RegisterInterval(time.Second*10),
    33  	)
    34  
    35  	service.Init()
    36  
    37  	hello.RegisterSayHandler(service.Server(), new(Say))
    38  
    39  	// Run server
    40  	if err := service.Run(); err != nil {
    41  		log.Fatal(err)
    42  	}
    43  }