go-micro helloWorld demo

1、编写服务接口原型文件(proto)

syntax = "proto3";

package TestHello;

service HelloService {
	rpc Hello (Hrequest) returns(Hresponse){}
}

message Hrequest {
	string name = 1;
}

message Hresponse{
	int32  code = 1;
	string msg =2;
}

go-micro helloWorld demo_第1张图片

2、通过接口原型文件生成代码

protoc --proto_path=. --micro_out=. --go_out=. helloworldr.proto

3、编写服务端代码

package main


import (
	"awesomeProject/proto"
	"context"
	"fmt"
	"github.com/micro/go-micro/v2"
)

type HelloService struct {}

func (h *HelloService)Hello(ctx context.Context,req *TestHello.Hrequest, rp *TestHello.Hresponse) error  {
	defer func() {
		if err :=recover(); err != nil{
			return
		}

	}()
	name := req.Name
	rp.Code = 200

	rp.Msg  = fmt.Sprintf("%s helloworld",name)
	return nil
}


func main()  {

	service := micro.NewService(
		micro.Name("hello"),
		)
	service.Init()
	TestHello.RegisterHelloServiceHandler(service.Server(),new(HelloService))

	if err:= service.Run(); err!=nil{
		fmt.Println("service err", err)
	}

}	

3、编写客户端代码

package main

import (
	"awesomeProject/proto"
	"context"
	"fmt"
	"github.com/micro/go-micro/v2"
)
func main(){
	//创建一个新的服务
	server := micro.NewService(micro.Name("getHello"))
	//初始化
	server.Init()
	hello := TestHello.NewHelloService("hello",server.Client())
	response,err:=hello.Hello(context.TODO(),&TestHello.Hrequest{
		Name:                 "yangjun",
		XXX_NoUnkeyedLiteral: struct{}{},
		XXX_unrecognized:     nil,
		XXX_sizecache:        0,
	})
	if err != nil{
		fmt.Println(err)
	}

	fmt.Println(response.Msg)
}

你可能感兴趣的:(go-micro helloWorld demo)