7

在通过 HTTP 发送时,是否有一种有效的技术来批处理不同的 Protobuf 事件?

目标是在一个请求中包含多类型 Protobuf 消息的列表。我的一个想法是将消息分隔成小数组并指定它们的类型以便能够在服务器上反序列化它们。

4

1 回答 1

3

您可以使用某些Any消息类型与 结合repeated,如下所示:

message Any {
    string type_url = 1;
    bytes value = 2;
}

message Envelope {
    repeated Any events = 1;
}

然后,在您的代码中:

  • 序列化的时候,一定要type_url根据你序列化的消息类型来设置value
  • 反序列化时,您必须阅读type_url以了解其中包含哪种类型value,并相应地反序列化

上面的示例重现了google/protobuf/any,此处记录: https ://developers.google.com/protocol-buffers/docs/proto3#any

于 2019-10-11T14:58:17.200 回答