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 }