文档章节

使用 Protocol Buffer 3 生成 gRPC Java 代码方法

Ryan-瑞恩
 Ryan-瑞恩
发布于 2016/09/25 12:00
字数 457
阅读 4323
收藏 3

由于本人测试都是Java,这里只做java 介绍,其他语言类似!

关于gRPC 多余的客套话,就不在这里说了,具体可以自行去官方网站查阅资料和介绍;

1.下载 protocol buffer 2/3 

    文档介绍:https://developers.google.com/protocol-buffers/docs/proto3

    下载地址:https://repo1.maven.org/maven2/com/google/protobuf/protoc/3.0.2/

    下载完成后,添加 window 环境变量(由于我本地有两个版本,故我命名为protoc2/protoc3)添加完成后,进行验证。如下图:

    如果出现于作者同样的图,说明安装成功!

2.在编译的 gRPC 的时候 ,protocol buffer 需要将 protoc-gen-grpc-java 作为插件来生成代码,

    文档介绍:http://www.grpc.io/docs/quickstart/java.html

    下载地址:https://repo1.maven.org/maven2/io/grpc/protoc-gen-grpc-java/1.0.1/

    下载完成后,同样的添加到 winddos环境变量中。

 

3.编写 .proto 文件 。命名为 : grpc-helloworld.proto .文件内容如下:

    

syntax = "proto3";

option java_generic_services = true;
option java_multiple_files = true;
option java_package = "com.hservice.grpc.schema";
option java_outer_classname = "HelloWorldProto";

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

首先生成Proto 文件

再执行生成命令:( >>>   protoc3 --plugin=protoc-gen-grpc-java=D:/sysEnv/protoc-gen-grpc-java.exe --grpc-java_out=java --proto_path=proto proto/g
rpc-helloworld.proto) 生成gRPC文件

    

    如果在这一步的时候,执行失败,请注意路径参数的配置。

4.生成后,会在com.hservice.grpc.schema 包下生存 GreeterGrpc.java 文件。我的生成后java 代码如下:

    

 

5. 继承并覆盖 gRPC 中的 rpc 方法

   

/**
 * @author Rayn on 2016/9/25.
 * @email liuwei412552703@163.com.
 */
public class GrpcGreeterImpl extends GreeterGrpc.GreeterImplBase {

    /**
     * <pre>
     * Sends a greeting
     * </pre>
     *
     * @param request
     * @param responseObserver
     */
    @Override
    public void sayHello(HelloRequest request, StreamObserver<HelloReply> responseObserver) {

        HelloReply reply = HelloReply.newBuilder().setMessage("Hello " + request.getName()).build();
        responseObserver.onNext(reply);
        responseObserver.onCompleted();


    }
}

至此,已经完成相应的工作。

 

注:本人环境为 win7 64 位, protobuf 3, grpc 插件为1.0.1, 如果有什么问题,可以交流!

© 著作权归作者所有

Ryan-瑞恩

Ryan-瑞恩

粉丝 152
博文 245
码字总数 189501
作品 0
西安
后端工程师
私信 提问
springboot整合gprc 传输对象

一,grpc简介: GRPC是google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf 3.x,基于Netty 4.x +。GRPC与thrift、avro-rpc等其实在总体原理上并没有太大的区别,简而言之...

xiaomin0322
2018/04/26
675
0
远程通信协议:从 CORBA 到 gRPC

自从产业界发明机器联网的那一天就已经开始探索最优的远程通信机制。操作系统如 UNIX、Windows 和 Linux 等都有实现远程通信的内部协议,挑战在于如何向开发人员开放一个通信框架。 一、远程...

RiboseYim
2017/10/31
126
0
gRPC基本使用(一)--java与go之间的相互调用

gRPC是一个高性能、开源、通用的RPC框架,面向移动和HTTP/2设计。gRPC 默认使用 protocol buffers,这是 Google 开源的一套成熟的结构数据序列化机制。 Protocol Buffers 是一种轻便高效的结...

明天以后
2018/11/24
629
0
微服务跨语言 gRPC 之 Java & Python

本文旨在说明 spring-boot-starter-grpc 框架与 Python 之间跨语言 RPC 调用的友好实现。阅读本文前,请详细阅读 wiki文档,以便了解 的工作原理。 Java Server & Client 模块说明: sample...

Anoyi
2018/09/29
0
0
grpc实战——构建一个简单的名称解析服务

环境说明: 语言主要用java实现,ide使用的是idea,使用maven作为软件项目管理工具。 说明:本项目源码已发布,点击grpc名称服务可以看到本项目的源码。欢迎大家fork实践体验。 本篇主要是对...

程序员Sunny
2018/05/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

可见性有序性,Happens-before来搞定

写在前面 上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO ...

tan日拱一兵
34分钟前
3
0
网络七层模型与TCP/UDP

为了使全球范围内不同的计算机厂家能够相互之间能够比较协调的进行通信,这个时候就有必要建立一种全球范围内的通用协议,以规范各个厂家之间的通信接口,这就是网络七层模型的由来。本文首先...

爱宝贝丶
37分钟前
4
0
Jenkins World 贡献者峰会及专家答疑展位

本文首发于:Jenkins 中文社区 原文链接 作者:Marky Jackson 译者:shunw Jenkins World 贡献者峰会及专家答疑展位 本文为 Jenkins World 贡献者峰会活动期间的记录 Jenkins 15周岁啦!Jen...

Jenkins中文社区
55分钟前
10
0
杂谈:面向微服务的体系结构评审中需要问的三个问题

面向微服务的体系结构如今风靡全球。这是因为更快的部署节奏和更低的成本是面向微服务的体系结构的基本承诺。 然而,对于大多数试水的公司来说,开发活动更多的是将现有的单块应用程序转换为...

liululee
今天
8
0
OSChina 周二乱弹 —— 我等饭呢,你是不是来错食堂了?

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ 自行车丢了:给主编推荐首歌 《クリスマスの夜》- 岡村孝子 手机党少年们想听歌,请使劲儿戳(这里) @烽火燎原 :国庆快来,我需要长假! ...

小小编辑
今天
981
13

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部