grpc proto文件生成java.net实体类以及客户端代码

Posted whoisrain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grpc proto文件生成java.net实体类以及客户端代码相关的知识,希望对你有一定的参考价值。

背景

工作中对接对方服务是GRPC,对方只提供了proto契约文件,需要自己生成对应的实体类以及客户端代码,故记录下操作流程。

Java 代码生成

实体类:

通过protoc插件生成实体类
https://github.com/protocolbuffers/protobuf/releases 下载对应版本的protoc工具解压,我这边用的是3.1.0版本的
proto文件拷贝至protoc同目录,执行如下命令:
protoc --java_out=./java/ hello.proto
对应生成的文件:技术图片

maven pom引用:

    <dependencies>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-protobuf</artifactId>
            <version>1.17.1</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-stub</artifactId>
            <version>1.17.1</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-auth</artifactId>
            <version>1.17.1</version>
        </dependency>
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.1.0</version>
        </dependency>
    </dependencies>

客户端:
通过protocprotoc-gen-grpc-java 两个插件生成客户端代码
protoc插件用上面下载好的,protoc-gen-grpc-java 下载地址:https://mvnrepository.com/artifact/io.grpc/protoc-gen-grpc-java
选择对应版本后(我这边是1.17.1),点file下载windows下的插件 protoc-gen-grpc-java-1.17.1-windows-x86_64.exe
然后cmd输入命令:
protoc --plugin=protoc-gen-grpc-java=D:\\protoc-gen-grpc-java-1.17.1-windows-x86_64.exe --grpc-java_out=./java/ hello.proto
没有报错则会生成HelloGrpc.java,即为客户端代码
技术图片


C# 代码生成

实体类
由于C#只用到了实体类向java服务转发,顾没有生成客户端代码的部分,同样适用protoc插件生成,注意protoc插件版本需要和Google.Protobuf.dll版本保持一致,否则编译可能会失败,我这边对应的版本是3.2.0,对应下载3.2.0的插件后执行命令:
protoc --csharp_out=./csharp/ hello.proto
生成 Hello.cs即可使用了。

以上是关于grpc proto文件生成java.net实体类以及客户端代码的主要内容,如果未能解决你的问题,请参考以下文章

gRPC之.proto生成go文件并创建grpc服务端

Grpc对象转proto代码工具

使用 protobuf-net.Grpc 生成通用服务的 .proto 文件

PHP使用gRPC请求GO服务实战

protoc 不生成服务存根文件

gRPC的proto内import其他proto导致的一次小坑