开发中需要用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