go-micro安装及使用过程遇到的小问题 MAC

brew install automake
brew install libtool
brew install protobuf

#go mod模式下进行安装
go install google.golang.org/protobuf/cmd/protoc-gen-go
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
go install github.com/asim/go-micro/cmd/protoc-gen-micro/v3@latest

测试:

syntax = "proto3";
package user;
option go_package ="./userpb";
message UserReq {
  int64 user_id = 1;
  string user_name = 2;
  string password = 3;
}

message UserResp{
  string reply=1;
}

service Hello{
  rpc GetUser(UserReq) returns (UserResp) {};
}

在user文件路径下生成pb文件:

protoc --micro_out=. user.proto --go_out=. user.proto --go-grpc_out=require_unimplemented_servers=false:. user.proto

服务端:

package main

import (
	"context"
	"fmt"
	"github.com/asim/go-micro/plugins/registry/consul/v3"
	"github.com/asim/go-micro/v3"
	"github.com/asim/go-micro/v3/registry"
	"time"
	"user/userpb"
)

type Hello struct{}

func (c *Hello) GetUser(ctx context.Context, in *userpb.UserReq, out *userpb.UserResp) (err error) {
	out.Reply = fmt.Sprintf("getUser:%d,%s,%s", in.UserId, in.UserName, in.Password)
	fmt.Println(out.Reply)
	return nil
}

func main() {
	var service micro.Service
	var options = []micro.Option{
		micro.Registry(consul.NewRegistry(func(op *registry.Options) {
			op.Addrs = []string{
				"127.0.0.1:8500",
			}
		})),
		micro.Name("test.hello"),
		micro.RegisterTTL(time.Second * 30),
		micro.RegisterInterval(time.Second * 10),
	}
	options = append(options, micro.Address("127.0.0.1:10001"))
	service = micro.NewService(options...)

	service.Init()

	// Register handler
	err := userpb.RegisterHelloHandler(service.Server(), new(Hello))
	if err != nil {
		panic(err)
	}

	// Run the server
	if err := service.Run(); err != nil {
		panic(err)
	}
}

客户端:

package main

import (
	"context"
	"fmt"
	"github.com/asim/go-micro/plugins/registry/consul/v3"
	"github.com/asim/go-micro/v3"
	"github.com/asim/go-micro/v3/registry"
	"user/userpb"
)

func main() {
	consulRegistry := consul.NewRegistry(func(op *registry.Options) {
		op.Addrs = []string{
			"127.0.0.1:8500",
		}
	})
	service := micro.NewService(
		micro.Registry(consulRegistry),
		micro.Address("127.0.0.1:10002"),
	)
	service.Init()

	c := userpb.NewHelloService("test.hello", service.Client())
	user, err := c.GetUser(context.Background(), &userpb.UserReq{
		UserName: "windy",
		UserId:   150,
		Password: "hhhhhhh",
	})
	if err != nil {
		panic(err)
	}
	fmt.Println(user.Reply)
}

启动服务端后,打开客户端可以看到:

在consul管理界面: 

 

 问题:

遇到仓库不存在或路径错误,考虑修改goproxy,一般是拉取问题;

pb文件要求的类型和代码能给的类型不一致,考虑是安装的版本问题;

猜你喜欢

转载自blog.csdn.net/qq_37575994/article/details/127120364