获取示例代码
1 2 3
| git clone -b v1.38.0 https://github.com/grpc/grpc-java cd grpc-java/examples ./gradlew installDist
|
运行示例
1 2
| ./build/install/examples/bin/hello-world-server ./build/install/examples/bin/hello-world-client
|
更新gRPC服务
修改proto文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| // The greeting service definition. service Greeter { // Sends a greeting rpc SayHello (HelloRequest) returns (HelloReply) {} rpc SayHelloAgain(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; }
|
更新服务定义
更新服务端
src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| static 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 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()); }
|
重新构建
1 2 3
| ./gradlew installDist ./build/install/examples/bin/hello-world-server ./build/install/examples/bin/hello-world-client
|