go - gRPC 流中的错误类型

标签 go protocol-buffers grpc

我有一个 gRPC 端点来回流式传输查询和结果,我想发回的服务器端经常会出现错误。我目前的错误处理方法只是在回复中包含一条错误消息。

service MyService {
        rpc Query (stream QueryRequest) returns (stream QueryReply) {}
}

message QueryReply {
        string id = 1;
        repeated string kind = 2;
        message DataList {
                repeated string data = 1;
        }
        map<string, DataList> data = 3;
        string error = 4;
}

我怀疑创建单独的消息会更有效,这样错误消息就不必包含所有其他数据。我对制作和同步多条消息犹豫不决,因为我不想增加太多的复杂性。拆分消息可以获得什么效率?是否有一种规范的方式来执行此操作(特别是在 go 中)?

最佳答案

由于 protobuf 不发送空(默认)字段,将其拆分可能并没有真正提高效率。

因此,在您设置 error="foo"的情况下 基本上只有 foo 通过网络发送。

关于go - gRPC 流中的错误类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44102055/

相关文章:

c# - .NET/C# 与 Python 互操作

python - 如何知道 GRPC 服务器是否可用

c# - 如何为 gRPC 启用服务器端 SSL?

c++ - 调用 fork 后 gRPC 服务器中的 SSL 握手失败

go - 未初始化的 channel 如何表现?

go - golang中的等效盐和哈希

go - 实现相同接口(interface)的不同返回值的接口(interface)转换

go - 如何在 Godoc 中隐藏标准库?

scala - 如何直接在 Play 中返回 Protocol Buffer ! 2.0 框架?

c++ - Protobuf导致ParseFromIstream上的段错误