gRPC Java Quickstart
来源:互联网 发布:ubuntu ntfs 移动硬盘 编辑:程序博客网 时间:2024/05/18 01:05
本指南通过简单的工作示例可以让您以Java开始使用gRPC。
开始之前
先决条件
- JDK:版本7或更高版本
下载样例
您将需要一个示例代码的本地副本来完成此快速入门。从我们的Github存储库中下载示例代码(以下命令克隆整个存储库,但您只需要这个快速入门和其他教程的示例)。
$ # Clone the repository at the latest release to get the example code:$ git clone -b v1.2.0 https://github.com/grpc/grpc-java$ # Navigate to the Java examples:$ cd grpc-java/examples
运行gRPC应用
从examples
目录中:
- 编译客户端和服务器
$ ./gradlew installDist
- 运行服务器
$ ./build/install/examples/bin/hello-world-server
- 在另一个终端,运行客户端
$ ./build/install/examples/bin/hello-world-client
恭喜你!您刚刚使用gRPC运行客户端 - 服务器应用程序。
更新gRPC服务
现在我们来看看如何使用服务器上的一个额外的方法来更新应用程序,以供客户端调用。我们的gRPC服务是使用协议缓冲区定义的;
您可以在gRPC Basics: Java中找到关于如何在.proto
文件中定义服务的更多信息。
现在所有你需要知道的是,服务器和客户端“stub”都有一个SayHello
RPC方法,它从客户端获取一个HelloRequest
参数,并从服务器返回一个HelloResponse
,这个方法是这样定义的:
// 欢迎服务的定义service Greeter { // 发送一个问候 rpc SayHello (HelloRequest) returns (HelloReply) {}}// 请求消息中包含用户名信息message HelloRequest { string name = 1;}// 响应消息中包含问候语信息message HelloReply { string message = 1;}
让我们更新这个,以便Greeter服务有两种方法。编辑src/main/proto/helloworld.proto
并使用一个新的SayHelloAgain
方法更新它,该方法具有相同的请求和响应类型:
// 欢迎服务的定义service Greeter { // 发送一个问候 rpc SayHello (HelloRequest) returns (HelloReply) {} // 发送另一个问候 rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}}// 请求消息中包含用户名信息message HelloRequest { string name = 1;}// 响应消息中包含问候语信息message HelloReply { string message = 1;}
(不要忘记保存文件!)
更新并运行应用
当我们重新编译示例时,将重新生成GreeterGrpc.java
。其中包含我们生成的gRPC客户端和服务器类。这也会重新生成用于填充,序列化和检索我们的请求和响应类型的类。
然而,我们仍然需要在我们的示例应用程序的人为书写部分中实现和调用新的方法。
更新服务器
在同一个目录中,打开src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java
。像这样实现新方法:
private class GreeterImpl extends GreeterGrpc.GreeterImplBase { @Override public void sayHello(HelloRequest req, StreamObserver<HelloReply> responseObserver) { HelloReply reply = HelloReply.newBuilder().setMessage("Hello " + req.getName()).build(); responseObserver.onNext(reply); responseObserver.onCompleted(); } @Override public void sayHelloAgain(HelloRequest req, StreamObserver<HelloReply> responseObserver) { HelloReply reply = HelloReply.newBuilder().setMessage("Hello again " + req.getName()).build(); responseObserver.onNext(reply); responseObserver.onCompleted(); }}...
更新客户端
在同一个目录中,打开src/main/java/io/grpc/examples/helloworld/HelloWorldClient.java
。像这样调用新方法:
public void greet(String name) { logger.info("Will try to greet " + name + " ..."); HelloRequest request = HelloRequest.newBuilder().setName(name).build(); HelloReply response; try { response = blockingStub.sayHello(request); } catch (StatusRuntimeException e) { logger.log(Level.WARNING, "RPC failed: {0}", e.getStatus()); return; } logger.info("Greeting: " + response.getMessage()); try { response = blockingStub.sayHelloAgain(request); } catch (StatusRuntimeException e) { logger.log(Level.WARNING, "RPC failed: {0}", e.getStatus()); return; } logger.info("Greeting: " + response.getMessage());}
运行
就像我们以前一样,从examples目录中:
- 编译客户端和服务器
$ ./gradlew installDist
- 运行服务器
$ ./build/install/examples/bin/hello-world-server
- 在另一个终端,运行客户端
$ ./build/install/examples/bin/hello-world-client
下一步
- 阅读本示例的完整说明,以及了解gRPC在我们概述中的工作原理
- 阅读更详细的教程:gRPC Basics: Java
- 浏览gRPC Java核心API在参考文档中
参考链接: gRPC Java Quickstart
- gRPC Java Quickstart
- Grpc-java MacOS编译
- gRPC-java的编译
- gRPC Java代码生成
- rpc框架--grpc-java
- grpc java版 入门教程
- java gRPC之helloworld
- 【JAVA】gRPC使用
- gRPC 对应Java类型
- Quickstart
- Ant编译Java项目-QuickStart
- gRPC
- GRPC
- grpc
- gRPC
- grpc
- gRPC
- grpc学习笔记--Java版
- 按截断二进制指数退避算法进行重传时,重传失败的概率是怎么算的?
- C++模板顺序表
- AS 快捷键
- 完美立方
- 文章标题
- gRPC Java Quickstart
- 第6章 HTTP 头部 通用头部字段
- 15秒的倒计时和15分钟的倒计时
- 蓝桥杯之《人民币金额大写》
- SpringBoot 学习记录(三): jpa
- Spring Boot 集成MyBatis
- java future
- WPF实战之DataGrid 单元格如何默认单击一次点中
- 图像的归一化互信息Normlized Mutual Information