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

因爲本人測試都是Java,這裏只作java 介紹,其餘語言相似!html

關於gRPC 多餘的客套話,就不在這裏說了,具體能夠自行去官方網站查閱資料和介紹;java

1.下載 protocol buffer 2/3 maven

    文檔介紹:https://developers.google.com/protocol-buffers/docs/proto3ide

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

    下載完成後,添加 window 環境變量(因爲我本地有兩個版本,故我命名爲protoc2/protoc3)添加完成後,進行驗證。以下圖:網站

    若是出現於做者一樣的圖,說明安裝成功!ui

2.在編譯的 gRPC 的時候 ,protocol buffer 須要將 protoc-gen-grpc-java 做爲插件來生成代碼,google

    文檔介紹:http://www.grpc.io/docs/quickstart/java.htmlspa

    下載地址: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, 若是有什麼問題,能夠交流!

相關文章
相關標籤/搜索