如何发送格式在运行时确定的 gRPC 消息?



我主要对在Java中执行此操作感兴趣,但是看到任何语言的解决方案都会有所帮助。

根据我正在阅读的各种文档,gRPC 的默认工作流程是

  • 写入.proto文件
  • 从该文件生成客户端和/或服务器代码
  • 编写程序并将其与生成的代码一起编译

我想做的是以编程方式读取消息架构(从.proto文件或通过其他方式(,然后将根据该架构布局的一些数据发送到某个地址。

我现在能看到的唯一方法是掏出,在临时目录中生成代码,调用编译器,加载编译后的代码,并使用反射来获取预期的函数。

这对我来说听起来像是一个极端的黑客。有没有更简单的选择?

在 gRPC Java 中,生成的代码和原型是可选的,您实际上并不需要它们(尽管它们很方便(。 要动态解释消息,您需要定义自己的封送程序,该封送程序与访问原始消息字节的InputStream一起使用。 从这里你可以将它们缓冲到一个数组中,并决定如何解析它们。

作为类似的练习,我编写了一个关于将 JSON 与 gRPC 结合使用的更深入的教程。 对于您的代码,原理应该是相同的。

最新更新