github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/greeter/api/rpc/rpc.go (about)

     1  package main
     2  
     3  import (
     4  	"log"
     5  
     6  	proto "github.com/micro/go-micro/examples/greeter/api/rpc/proto/hello"
     7  	hello "github.com/micro/go-micro/examples/greeter/srv/proto/hello"
     8  	"github.com/micro/go-micro/v2"
     9  
    10  	"context"
    11  )
    12  
    13  type Greeter struct {
    14  	Client hello.SayService
    15  }
    16  
    17  func (g *Greeter) Hello(ctx context.Context, req *proto.Request, rsp *proto.Response) error {
    18  	log.Print("Received Greeter.Hello API request")
    19  
    20  	// make the request
    21  	response, err := g.Client.Hello(ctx, &hello.Request{Name: req.Name})
    22  	if err != nil {
    23  		return err
    24  	}
    25  
    26  	// set api response
    27  	rsp.Msg = response.Msg
    28  	return nil
    29  }
    30  
    31  func main() {
    32  	// Create service
    33  	service := micro.NewService(
    34  		micro.Name("go.micro.api.greeter"),
    35  	)
    36  
    37  	// Init to parse flags
    38  	service.Init()
    39  
    40  	// Register Handlers
    41  	proto.RegisterGreeterHandler(service.Server(), &Greeter{
    42  		// Create Service Client
    43  		Client: hello.NewSayService("go.micro.srv.greeter", service.Client()),
    44  	})
    45  
    46  	// for handler use
    47  
    48  	// Run server
    49  	if err := service.Run(); err != nil {
    50  		log.Fatal(err)
    51  	}
    52  }