美文网首页
grpc-java快速体验

grpc-java快速体验

作者: 十毛tenmao | 来源:发表于2021-06-28 23:56 被阅读0次

公司内部有的服务提供的是grpc协议的接口,所以使用demo快速了解一下

快速体验

  • 下载源码
$ git clone -b v1.38.0 https://github.com/grpc/grpc-java
  • 编译
$ cd grpc-java/examples
$ ./gradlew installDist
  • 运行服务器端
$ ./build/install/examples/bin/hello-world-server
INFO: Server started, listening on 50051
  • 运行客户端
$ ./build/install/examples/bin/hello-world-client
INFO: Will try to greet world ...
INFO: Greeting: Hello world

增加接口

  • 修改.proto文件(src/main/proto/helloworld.proto)
// 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;
}
  • 修改服务端
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();
  }
}
  • 修改客户端
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());
}

ps: 后面还可以再会增加从0开始完成一个grpc调用

参考

相关文章

  • grpc-java快速体验

    公司内部有的服务提供的是grpc协议的接口,所以使用demo快速了解一下 快速体验 下载源码 编译 运行服务器端 ...

  • gRPC java的编译

    gRPC-java代码生成器 gRPC-java的代码生成器编译需要先编译protobuf,否则会报c++源文件无...

  • java实现gRpc服务端-客户端框架代码

    参考官方github代码例子:https://github.com/grpc/grpc-java/tree/mas...

  • Grpc-java实践

    一.Grpc简介 一个2016年才由google正式发布的的RPC框架,基于http2,protobuf协议 官网...

  • 产品体验:深度体验vs快速体验

    产品体验:深度体验vs快速体验

  • Swift入门----02 初体验

    快速体验 想要快速体验Swift的开发,创建项目的时候要和其他创建方式有所区别以前创建项目都是使用 creat a...

  • Flynn快速体验

    Vagrant Vagrant 是一个虚拟机管理软件,就是管理你机器上的虚拟机的通过它我们可以以命令行的方式启动关...

  • SpringBoot 快速体验

    目标,输出 Hello SpringBoot ! 准备 浏览器 jdk8 idea(自备 ide 技能均可) 新建...

  • ZooKeeper 快速体验

    一些系统试用会依赖Zookeeper(如Dubbo),为了方便快速试用,可以在本地配置单机模式,方便快速学习。 下...

  • dockerfile快速体验

    通过构建一个脚本来构建我们的镜像。它有其固定的语法规则,我们要做的就是理解规则,并制作我们需要的镜像。 准备工作 ...

网友评论

      本文标题:grpc-java快速体验

      本文链接:https://www.haomeiwen.com/subject/qjfhultx.html