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

2024-02-22

我主要对用 Java 来做这件事感兴趣,但是看到任何语言的解决方案都会有帮助。

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

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

如果以编程方式读取消息模式(无论是从.proto文件或通过其他方式),然后将根据该模式布置的一些数据发送到某个地址。

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

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


在 gRPC Java 中,生成的代码和原型是可选的,您实际上并不需要它们(尽管它们很方便)。要动态解释消息,您需要定义自己的消息马歇尔 https://github.com/grpc/grpc-java/blob/v1.15.x/core/src/main/java/io/grpc/MethodDescriptor.java#L142,它与一个InputStream访问原始消息字节。从这里您可以将它们缓冲到数组中,并决定如何解析它们。

作为类似的练习,我编写了一个关于使用的更深入的教程JSON 与 gRPC https://grpc.io/blog/grpc-with-json。您的代码的原理应该是相同的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • JPA 中的复合键

    我想创建一个具有自动生成的主键的实体 而且还有一个由其他两个字段组成的唯一复合键 我如何在 JPA 中执行此操作 我想这样做是因为主键应该用作另一个表中的外键 并且使其复合并不好 在下面的代码片段中 我需要命令和模型是唯一的 pk当然是主键
  • JDK 文档是语言规范的一部分吗?

    只有一名官员Java语言规范 https docs oracle com javase specs jls se8 html index html所有 Java 实现都必须遵守它 API文档怎么样 所有Java实现都需要遵守吗这个版本 ht
  • createImage(int width, int height) 的问题

    我有以下代码 作为游戏的一部分每 10 毫秒运行一次 private void gameRender if dbImage null createImage returns null if GraphicsEnvironment isHea
  • @RestController 没有 @ResponseBody 方法工作不正确

    我有以下控制器 RestController RequestMapping value base url public class MyController RequestMapping value child url method Req
  • 不同类型的数组

    是否可以有一个包含两种不同类型数据的数组 我想要一个包含双精度型和字符串的数组 我尝试过 ArrayList
  • 在 Wildfly 中与 war 部署共享 util jar 文件

    假设我有一个名为 util jar 的 jar 文件 该 jar 文件主要包含 JPA 实体和一些 util 类 无 EJB 如何使这个 jar 可用于 Wildfly 中部署的所有 war 无需将 jar 放置在 war 的 WEB IN
  • 什么时候可以在 Java 中使用 Thead.stop() ?

    Thread stop 的 Java 文档听起来好像如果您调用 Thread stop 世界就会终结 已弃用 这种方法本质上是不安全的 停止线程 Thread stop 导致它解锁所有已锁定的监视器 作为未经检查的 ThreadDeath
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • 如何使用 Hibernate (EntityManager) 或 JPA 调用 Oracle 函数或过程

    我有一个返回 sys refcursor 的 Oracle 函数 当我使用 Hibernate 调用该函数时 出现以下异常 Hibernate call my function org hibernate exception Generic
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • 生成的序列以 1 开头,而不是注释中设置的 1000

    我想请求一些有关 Hibernate 创建的数据库序列的帮助 我有这个注释 下面的代码 在我的实体类中 以便为合作伙伴表提供单独的序列 我希望序列以 1000 开头 因为我在部署期间使用 import sql 将测试数据插入数据库 并且我希
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法
  • Java:如何为山区时间创建 TimeZone 对象?

    必须不禁用夏令时 嗯 在这个清单 http en wikipedia org wiki List of tz database time zones在 zoneinfo 时区名称中 有很多声称是 山地时间 找到最适合您想要的那个 然后使用它
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • 泛型、数组和 ClassCastException

    我想这里一定发生了一些我不知道的微妙事情 考虑以下 public class Foo
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数

随机推荐

  • Python:异步生成器已在运行

    如下例所示 我在使用异步生成器时遇到了异常错误 async def demo async def get data for i in range 5 loop for or while await asyncio sleep 1 some
  • Azure Web 应用程序与 Azure 移动应用程序

    我今天创建了一个Azure Web应用程序 它在设置中有一个移动部分 其中包含推送通知 移动身份验证等 您甚至可以下载移动客户端应用程序的源代码 我知道这曾经是移动应用程序 移动服务 的一部分 我创建了一个 Azure 移动应用程序来与 W
  • 识别活动网络接口

    在 NET 应用程序中 如何识别使用哪个网络接口与给定 IP 地址进行通信 我在具有多个网络接口 IPv4 和 v6 的工作站上运行 并且我需要获取用于流向给定数据库服务器的 正确 接口的地址 最简单的方法是 UdpClient u new
  • Allure Framework:TestNG 适配器错误地将 @AfterMethod 放置在报告中

    我正在使用 allure V1 4 8 TestNG 看起来 TestNG 适配器错误地将 AfterMethod 放置在报告中 基本上它将 AfterMethod 从测试用例放入下一个测试用例中 这是简单的代码 Step a test1
  • 从 .Net 应用程序打开 Windows 7 帮助 (helpPane.exe)

    我正在尝试从 Net 表单应用程序打开 Windows 7 帮助到特定书签 例如在打印机安装时 我尝试以与打开控制面板小程序相同的方式打开它 在下面的示例中返回和恢复 ProcessStartInfo startInfo new Proce
  • 当页面滚动到顶部时,Next.js 链接不会呈现

    我有一个像这样的组件 const Milestone props gt const path disabled index rest props if disabled return
  • 生成一定范围内的唯一随机数

    我需要在一定范围内生成随机的唯一数字 我该怎么做 我可以通过以下方式生成随机数 generator arr x rand min max len count arr flag 0 for i 0 i lt len i if flag 1 g
  • 如何在javascript中打印所有百分比超过70%的学生姓名?

    我在用json rule engine https www npmjs com package json rules engine https www npmjs com package json rules engine我有一份学生名单
  • 在 R 中向量化循环

    必须有一种简单的方法来向量化 R 中的以下循环 但我看不到它 w lt numeric 10 z lt rnorm 20 v lt c sample 1 10 10 sample 1 10 10 Random ordering of c 1
  • jQuery AJAX 提交表单

    我有一张带有姓名的表格orderproductForm以及未定义数量的输入 我想做某种 jQuery get 或 ajax 或类似的东西 通过 Ajax 调用页面 并发送表单的所有输入orderproductForm 我想一种方法是做类似的
  • pyside-uic 在哪里?

    我正在尝试使用 Qt Designer 和 pyside uic mydesign ui gt design py 但是 这个程序不存在 我查看了 python 2 7 下的站点包 我看到 pyside lupdate exe pyside
  • 创建项目后如何将 ndk 设置从默认 C++ 工具链更改为 C++14?

    我使用默认的 C 工具链创建了一个 Android 项目 现在 当我尝试包含双簧管上包含 C 14 功能的示例项目的代码片段时 我不断收到错误 因此 我尝试包含代码来创建模板 但现在它使我的代码变得混乱 并转储了我不希望有的声明 我尝试提及
  • 使用 Meteor.settings 功能

    Meteor 最近添加了一个全新的Meteor 设置 http docs meteor com meteor settings meteor settings对象从 v0 5 4 开始 并且以一种极其烦人的方式 没有在他们的文档中正确解释如
  • 如何将一些 XML 元素包含在边界框中?

    我想在此处附上一对复选框和单选按钮 在矩形或 边界框 中 使其看起来像这样 当然 但不那么难看 如何以以下 XML 作为起点来做到这一点
  • GeoViews:具有 matplotlib 后端的 GeoDataFrames 的分类图例

    已安装的软件包 geoviews 1 9 1 matplotlib 3 4 2 我正在尝试做什么 For the Bokeh后端通过添加分类图例GeoViews是通过代理艺术家完成的 如中所述卡特里娜飓风路径示例 https geoview
  • UITableViewCell 的 NSTextAttachment 异步加载图像

    在异步线程或图像缓存库 如 SDwebimage 中动态加载图像 下面的代码是我尝试过的 从网络获取图像后它不会重新绘制 let mutableAttributedString NSMutableAttributedString if le
  • C 库的 C++/CLI 类包装器 - 回调

    我正在使用 C CLI 包装 C 库 C 库设计为从非托管 C 类中使用 这意味着库函数接受 C 对象指针 然后在回调中提供该指针 这使得回调代码能够将请求重定向到调用 C 对象中的适当事件函数 实际功能相当复杂 因此我将问题空间简化为几个
  • 当尝试在 GNU Radio 中使用我的 USRP 时,我收到“未找到 -----> 的设备”错误

    当尝试执行使用 USRP 的 GNU Radio 程序时 我收到错误回溯 该错误 在 Python 中 通常以以下内容结尾 self u uhd usrp source device addr args stream args uhd st
  • 在 PL/SQL 块内的 SQL 中使用嵌套表变量/集合

    我首先创建一个address type object CREATE TYPE address type AS OBJECT line1 VARCHAR2 100 line2 VARCHAR2 100 line3 VARCHAR2 100 c
  • 如何发送格式在运行时确定的 gRPC 消息?

    我主要对用 Java 来做这件事感兴趣 但是看到任何语言的解决方案都会有帮助 根据我正在阅读的各种文档 gRPC 的默认工作流程是 Write a proto file 从该文件生成客户端和 或服务器代码 编写您的程序并将其与生成的代码一起