go version 1.14.3
最终代码地址:github地址
etcd 请先自行安装或者下载win版本的直接可以启动
安装 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) } }