`
liu86th
  • 浏览: 118295 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

最新版grpc-demo

    博客分类:
  • Go
 
阅读更多

 

 

 

grpc-demo on windows

 

1. 生成proto文件

 

>1. 安装grpc protoc生成工具

# https://github.com/protocolbuffers/protobuf/releases

 

>2. golang安装支持.proto文件的plugins

#setting -> plugins -> search "protobuf support"

 

>3. 安装grpc

# go get -u google.golang.org/grpc

 

>4. 安装grpc依赖, 安装成功后,会在$GOPATH/bin目录下生成两个2进制文件

# go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

# go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

 

>5. 加入环境变量

# E:\Go-project\bin

 

6>. 编写data.proto

# mkdir proto

# mkdir ./proto/pb

 

syntax = "proto3";

package test;

option go_package="./pb";

message ProductRequest {

  int32 id = 1;

}

message ProductResponse {

  int32 stock = 1;

}

service ProService {

  rpc GetStockById(ProductRequest) returns (ProductResponse);

}

 

 

>7. 编译proto,生成data.pb.go和data_grpc.pb.go

#protoc --go_out=. --go-grpc_out=. *.proto

 

2. 编写服务器端代码

package main



import (

	"context"

	"fmt"

	"gitee.com/grpc-demo/proto/pb"

	"google.golang.org/grpc"

	"log"

	"net"

)



type Server struct {

	pb.UnimplementedProServiceServer

}



func (s *Server) GetStockById(ctx context.Context, pro *pb.ProductRequest) (*pb.ProductResponse, error) {

	// 业务处理

	return &pb.ProductResponse{

		Stock: pro.Id,

	}, nil

}



func main() {

	fmt.Println("start grpc server")

	listen, err := net.Listen("tcp", ":8012")

	if err != nil {

		log.Fatalf("fail to start server: %v", err)

	}



	s := grpc.NewServer()

	pb.RegisterProServiceServer(s, &Server{})

	err = s.Serve(listen)

	if err != nil {

		log.Fatalf("fail to start grpc-server: %v", err)

	}

}

 

 

3.编写客户端代码

package main



import (

	"context"

	"fmt"

	"gitee.com/grpc-demo/proto/pb"

	"google.golang.org/grpc"

	"google.golang.org/grpc/credentials/insecure"

	"log"

	"time"

)



func main() {

	fmt.Println("start client")

	conn, err := grpc.Dial("127.0.0.1:8012", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithBlock())

	if err != nil {

		log.Fatalf("fail to dial: %v", err)

	}

	defer conn.Close()



	client := pb.NewProServiceClient(conn)

	ctx, cancel := context.WithTimeout(context.Background(), time.Second)

	defer cancel()





	req := &pb.ProductRequest{

		Id: 256,

	}

	res, err := client.GetStockById(ctx, req)

	if err != nil {

		log.Fatalf("get stock fail: %v", err)

	}

	log.Printf("get stock success: %v", res)

}

 

 

4. 启动服务器

#go run .\server\main.go

#go run .\client\main.go

 

分享到:
评论

相关推荐

    grpc-core-1.24.0-API文档-中文版.zip

    包含翻译后的API文档:grpc-core-1.24.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.grpc:grpc-core:1.24.0; 标签:core、grpc、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开...

    grpc-api-1.24.0-API文档-中文版.zip

    包含翻译后的API文档:grpc-api-1.24.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.grpc:grpc-api:1.24.0; 标签:api、grpc、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index...

    protoc-gen-grpc-java-1.40.0-osx-aarch_64.exe

    protoc-gen-grpc-java-1.40.0-osx-aarch_64 mac arm芯片平台grpc生成java的支持。官网上面没有,这是基于源码编译生成的。 pom.xml:(protoc-gen-grpc-java-1.40.0.pom) <?xml version="1.0" encoding="UTF-8"?> ...

    grpc-api-1.24.0-API文档-中英对照版.zip

    包含翻译后的API文档:grpc-api-1.24.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:io.grpc:grpc-api:1.24.0; 标签:api、grpc、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用...

    grpc-java-1.9.0.tar.gz_gRPC-java_java Tcp _谷歌 RPC 框架

    gRPC-java 1.9.0 已发布,gRPC-java 是谷歌 RPC 框架 gRPC 的 Java 实现。gRPC 是一个高性能、开源、通用的 RPC 框架,面向移动和 HTTP/2 设计,是由谷歌发布的首款基于 Protocol Buffers 的 RPC 框架。 gRPC 基于 ...

    spring-dubbo-grpc-demo

    spring-dubbo-grpc-demo

    protoc+protoc-gen-grpc-java

    在Java环境下使用gRPC时,需要对.proto文件进行编译,生成服务端和客户端的存根代码,这正是`protoc`和`protoc-gen-grpc-java`工具的作用。 `protoc`是Protocol Buffers的编译器,它能够读取.proto文件并生成对应...

    grpc-stub-1.24.0-API文档-中文版.zip

    包含翻译后的API文档:grpc-stub-1.24.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.grpc:grpc-stub:1.24.0; 标签:stub、grpc、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开...

    开源项目-grpc-ecosystem-grpc-gateway.zip

    开源项目-grpc-ecosystem-grpc-gateway.zip,GitHub - grpc-ecosystem/grpc-gateway: gRPC to JSON proxy generator

    protoc-gen-grpc-java-1.9.1-windows-x86_64.exe

    protoc-gen-grpc-java-1.9.1-windows-x86_64.exe

    rpc-grpc-impl-1.3.8-API文档-中文版.zip

    包含翻译后的API文档:rpc-grpc-impl-1.3.8-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.alipay.sofa:rpc-grpc-impl:1.3.8; 标签:impl、sofa、alipay、rpc、grpc、jar包、java、中文文档; 使用方法:解压...

    grpc-java源码环境构建.doc

    GRPC-Java 源码环境构建 GRPC-Java 源码环境构建是一个相对复杂的过程,需要具备一定的技术基础和经验。本文将详细介绍 GRPC-Java 源码环境构建的步骤和过程,旨在帮助读者快速搭建 GRPC-Java 源码环境。 一、...

    opencensus-contrib-grpc-metrics-0.21.0-API文档-中英对照版.zip

    包含翻译后的API文档:opencensus-contrib-grpc-metrics-0.21.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:io.opencensus:opencensus-contrib-grpc-metrics:0.21.0; 标签:opencensus、metrics、...

    开源项目-grpc-ecosystem-go-grpc-middleware.zip

    开源项目-grpc-ecosystem-go-grpc-middleware.zip,gRPC Middleware - reusable auth, logging, retry, tracing libraries for Golang

    grpc-c_file

    【grpc-c】是一个基于Google开源的gRPC框架的C语言实现。gRPC是一个高性能、开源且通用的RPC框架,它面向移动和HTTP/2设计,提供了客户端和服务器框架,可以轻松构建可扩展的服务。gRPC的核心是ProtoBuf(Protocol ...

    grpc-core-1.24.0-API文档-中英对照版.zip

    包含翻译后的API文档:grpc-core-1.24.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:io.grpc:grpc-core:1.24.0; 标签:core、grpc、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用...

    protoc-gen-grpc-java-1.4.0-linux-aarch_64.exe

    protoc-gen-grpc-java-1.4.0-linux-aarch_64.exe

Global site tag (gtag.js) - Google Analytics