使用 gRPC 时,我们需要通过协议缓冲区编译器 (protoc) 或使用 Gradle 或 Maven protoc 构建插件从 .proto 服务定义生成 gRPC 客户端和服务器接口。
Flow now: protobuf file -> java code -> gRPC client.
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法可以跳过这一步呢?
如何创建一个通用的 gRPC 客户端,可以直接从 protobuf 文件调用服务器,而无需编译成 java 代码?或者,有没有办法在运行时生成代码?
Flow expect: protobuf file -> gRPC client.
Run Code Online (Sandbox Code Playgroud)
我想构建一个通用的 gRPC 客户端系统,输入是 protobuf 文件以及方法、包、消息请求的描述......而不必为每个 protobuf 再次编译。
非常感谢。
我正在运行时DynamicMessage从.proto加载的文件中构建java .
我的问题是将扩展设置为此类消息.
我有:
Descriptors.Descriptor包含类型并DynamicMessage为其创建Descriptors.Descriptor扩展类型并DynamicMessage为其创建现在我不知道如何设置包含消息的扩展名.
如果我要求字段列表,则包含描述符仅列出没有扩展字段的字段.这是有道理的.
扩展描述符只包含扩展类型的字段(它没有包含类型的字段).
请告诉我如何将它们组合在一起.
要了解上下文,您可能需要查看我之前关于此主题的问题,该问题与扩展无关:在运行时生成的协议缓冲区对象
编辑:
事实上,我正在寻找.setExtension生成的消息的类比.我注意到只有GeneratedMessage延伸,ExtendableMessage但我相信一定有办法:)