当前位置: 首页 > 知识库问答 >
问题:

原型如何使用任何类型的自制原型消息

吕永寿
2023-03-14

我目前正在构建一个python gRPC服务器,它将大量不同的proto消息序列化为json,以将它们存储到无sql数据库中。我希望简化此服务器的扩展,这样我们就可以添加新类型,而无需重写gRPC服务器和重新部署。理想情况下,我们希望定义一条新消息,将其放入一个proto文件中,并仅更新客户端。服务器首先应该期望任何类型,但知道。进行序列化/反序列化时要查找的原型文件或文件夹。

我读过关于“任何类型”的文章,我正在探索这是否是我的方法。上面有一些留档,但可以使用的示例很少。我不太明白的一件事是如何存储/检索“任何”字段的类型。

  • 所有文档都使用https作为任何字段类型的协议(例如type.googleapis.com/google.protobuf.Duration)。这也是默认设置。如果我使用本地文件系统会是什么样子?如何将其存储在客户端的proto消息中

共有1个答案

景才英
2023-03-14

抱歉,这只是部分回答。

我最近开始在项目中使用Any,可以提供一些视角。我有一个与您概述的类似(尽管更简单)的要求。封装的消息内容,但在我的情况下,客户机需要向服务器发送描述符,并识别特定的方法来帮助它(取消)封送等。

我一直在使用谷歌新的Golang APIv2,只熟悉Golang和Rust(不是Python)。缺少文档,但Golang文档有望帮助:

  • 任何PB

我也很难理解全局注册表的概念(实现),所以我破解了上面的解决方案。传入的消息元数据为服务器提供了足够的上下文,它可以构造消息类型并将字节列表到其中。

 类似资料:
  • 问题内容: 我想了解何时在js中使用原型方法。应该一直使用它们吗?还是在某些情况下不优选使用它们和/或导致性能下降? 在此站点上搜索js中命名空间的常用方法时,似乎大多数人都使用了基于非原型的实现:简单地使用对象或函数对象来封装名称空间。 来自基于类的语言,很难不尝试绘制相似之处,并认为原型就像“类”,而我提到的命名空间实现就像静态方法。 问题答案: 原型是一种 优化 。 很好地使用它们的一个很好

  • 我读了很多文章,但我不明白这两行之间的区别: 我看到的唯一区别是第一行触发了“未检查的分配”警告。

  • Rust 提供了多种原生类型,包括: 有符号整型(signed integers):i8, i16, i32, i64 和 isize(指针 size) 无符号整型(unsigned integers): u8, u16, u64 和 usize(指针 size) 浮点类型(floating point): f32, f64 char(字符):单独的 Unicode 字符,如 'a','α' 和

  • 问题内容: 我试图将一个bean 注入一个bean中,以便对单例bean方法的每个新调用都具有原型bean的新实例。 考虑如下的单例豆: 我希望每次调用该方法时,都会使用一个新实例。 下面是原型bean: 似乎正在发生的事情是,Spring急于在该方法中交付PrototypeBean的新实例。也就是说,该方法中的两行代码将在每一行中创建一个prototypeBean的新实例。 因此,在第二行中,输

  • 我对Kafka很陌生,对它有一些疑问。我已经配置了一个kafka消费者来消费来自主题的消息,并且我有不同类型的事件进入主题。f、 e、。 我想配置不同的kafka监听器来消费不同类型的事件。我认为有两种方法可以做到这一点,比如使用字符串(json)格式的事件,转换成事件对象,在不同类型之间切换,执行业务逻辑,或者配置不同的kafka监听器工厂 因此,第一种方法不是 ,对于第二种方法,我需要创建许多

  • 我正在使用一些现有的代码,它正在做我以前没有见过的事情。我已经处理了使用方法注入将原型bean自动转换为单例,或者使用getBean()从上下文中获取bean。我在这段代码中看到的是一个bean,它是一个原型,使用getBean()检索,它具有自动连接的依赖关系。这些大部分都是单例bean,这是有道理的。但是有另一个原型bean的自动生成,从我所看到的情况来看,它似乎得到了一个新的bean。我的问