protoc生成java grpc客户端代码
发布时间
阅读量:
阅读量
开发中需要用java程序调用一个golang程序的grpc接口。需要使用原始proto文件生成java的模板代码。
网上教程大多数给的是这段代码:
protoc -I=. --java_out=out engine.proto
这个代码生成的内容里,只会有proto的序列化和反序列化代码。不会有调用服务所用的newBlockingStub(chan);代码段,因此我们无法调用外部服务。(即只会翻译message段,不会翻译service段)
解决方案
首先,从https://repo1.maven.org/maven2/io/grpc/protoc-gen-grpc-java/1.31.1/下载一个protoc的java插件。
下载完成后要把该程序加入到$PATH中,比如/user/local/bin,然后在--plugin=后添加你的程序路径
使用这段代码,添加一个java的plugin:
protoc --plugin=protoc-gen-grpc-java engine.proto --java_out=out --grpc-java_out=out
使用java插件后,就会生成两个.java文件,一个是对应message的,一个是对应service的
附件
下面附一段java调用grpc远程接口的示例:
Engine.SgcPbRequest.Builder bder = Engine.SgcPbRequest.newBuilder();
bder.setRequest("hello");
Engine.SgcPbRequest req = bder.build();
ManagedChannel chan = ManagedChannelBuilder.forAddress("127.0.0.1", 6666).usePlaintext().build();
SenseGoEngineServiceGrpc.SenseGoEngineServiceBlockingStub stub = SenseGoEngineServiceGrpc.newBlockingStub(chan);
Engine.SgcPbKeyResult resp = stub.senseGoEngineGetKey(req);
System.out.println(resp.getKey().getAesKey());
全部评论 (0)
还没有任何评论哟~
