gRPC之.proto生成go文件并创建grpc服务端
Posted 程序彤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gRPC之.proto生成go文件并创建grpc服务端相关的知识,希望对你有一定的参考价值。
- 第一次生成:protoc --go_out=…/services Product.proto
- 修改proto后重新生成:protoc --go-grpc_out=…/services Product.proto
- 创建ProductService.go
package proto
import "context"
type ProdService struct {
}
func (this *ProdService) mustEmbedUnimplementedProdServiceServer() {
panic("implement me")
}
func(this *ProdService) GetProdStock(context.Context, *ProdRequset) (*ProdResponse, error){
return &ProdResponse{ProdStock: 20},nil
}
- 创建grpc服务端,server.go
package main
import (
"google.golang.org/grpc"
"learnProto/services/proto"
"net"
)
func main(){
rpcServer := grpc.NewServer()
proto.RegisterProdServiceServer(rpcServer,new(proto.ProdService))
listen, _ := net.Listen("tcp", ":8081")
rpcServer.Serve(listen)
}
- 创建客户端 client.go
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
"learnProto/services/proto"
"log"
)
func main(){
conn, err := grpc.Dial(":8081",grpc.WithInsecure())
if err!=nil {
log.Fatal(err)
}
defer conn.Close()
productClient := proto.NewProdServiceClient(conn)
productRes, err := productClient.GetProdStock(context.Background(), &proto.ProdRequset{
ProdId: 66,
})
if err!=nil{
log.Fatal(err)
}
fmt.Println(productRes.ProdStock)
}
以上是关于gRPC之.proto生成go文件并创建grpc服务端的主要内容,如果未能解决你的问题,请参考以下文章