go version  1.14.3

 最终代码地址:github地址

etcd 请先自行安装或者下载win版本的直接可以启动

etcd下载

安装 go get github.com/micro/go-micro/v2

安装工具protobuf相关工具

go get -u github.com/golang/protobuf/protoc-gen-go go-micro

自己的生成工具

go get github.com/micro/protoc-gen-micro/v2

 

proto文件

syntax = "proto3";
package  Users;

service UserService {
    rpc Test(UserRequest) returns (UserResponse) {}
}
message UserRequest {
    string id = 1;
}
message UserResponse {
    string ret = 2;
}

 

type UserService struct{}

func (g *UserService) Test(ctx context.Context, req *Users.UserRequest, rsp *Users.UserResponse) error {
    rsp.Ret="users"
    return nil
}

 

生成

protoc --proto_path=src/protos   --micro_out=src/Users --go_out=src/Users   Users.proto

运行 

service := micro.NewService(
        micro.Name("UserService"),
    )
     
    service.Init()

 
    Users.RegisterUserServiceHandler(service.Server(), new(UserService))
 
    if err := service.Run(); err != nil {
        fmt.Println(err)
    }

 

package main

import (
    "context"
    "github.com/micro/go-micro/v2"
    "jtthink/src/Users"
    "log"
)

type UserService struct{}
func (g *UserService) Test(ctx context.Context, req *Users.UserRequest, rsp *Users.UserResponse) error {
    rsp.Ret="users"
    return nil
}
func NewUserService() *UserService  {
    return &UserService{}
}
func main()  {

    service:=micro.NewService(
        micro.Name("UserService"))

    service.Init()

    err:=Users.RegisterUserServiceHandler(service.Server(),NewUserService())
    if err!=nil{
        log.Fatal(err)
    }
    if err = service.Run(); err != nil {
        log.Println(err)
    }



}
src\cmd\server.go

相关文章: