™技术博客

gRPC | JavaDemo

2021年6月15日

获取示例代码

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;
}

更新服务定义

1
./gradlew installDist

更新服务端

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
Tags: gRPC

扫描二维码,分享此文章