[go-micro实战]11 使用grpc构建简易的商品服务 注册到consul

新建项目 目录结构为

 1. 编写Models.proto(模型)和ProdServices.proto(定义传输接受的数据)

Models.proto

syntax = "proto3";
package Services;
option go_package= "../Services";

// 商品模型
message ProdModel {
  // @inject_tag: json:"pid"
  int32 ProdID = 1;
  // @inject_tag: json:"pName"
  string ProdName = 2;
}

ProdServices.proto

syntax = "proto3";
package Services;
option go_package= "../Services";
import "Models.proto";
message ProdRequest {
  int32 size =1;
}

message ProdListResponse {
  repeated ProdModel data = 1;
}

service ProdService {
  rpc GetProdList(ProdRequest) returns(ProdListResponse);
}

2. 使用gen.bat 生成Services目录下的四个go文件

cd Services/protos
protoc --micro_out=.. --micro_opt=paths=source_relative Models.proto
protoc --micro_out=.. --micro_opt=paths=source_relative ProdServices.proto
protoc --go_out=.. --go_opt=paths=source_relative Models.proto
protoc --go_out=.. --go_opt=paths=source_relative ProdServices.proto
cd..
protoc-go-inject-tag -input="Models.pb.go"
cd..

3. 编写 main 文件

package main

import (
	"gitee.com/Hind3ight/easy-go-micro/micro-project/ServiceLmpl"
	"gitee.com/Hind3ight/easy-go-micro/micro-project/Services"
	"github.com/micro/go-micro"
	"github.com/micro/go-micro/registry"
	"github.com/micro/go-plugins/registry/consul"

)

func main() {
	consulReg := consul.NewRegistry(
		registry.Addrs("192.168.31.246:8500"))

	prodService := micro.NewService(
		micro.Name("prodService"),
		micro.Address(":8081"),
		micro.Registry(consulReg),
	)
	prodService.Init()
	Services.RegisterProdServiceHandler(prodService.Server(), new(ServiceLmpl.ProdService))
	prodService.Run()
}

可能遇到的问题:panic: qtls.ConnectionState not compatible with tls.ConnectionState

这是不兼容的问题,可更换go的版本,这里使用了go 1.12

注意:更改版本不是在idea中切换sdk,或者更改gomod文件,而是下载好go 1.12并更改系统变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值