首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grpc流错误和TCP错误有什么区别?

grpc流错误和TCP错误有什么区别?
EN

Stack Overflow用户
提问于 2022-07-28 09:55:06
回答 1查看 239关注 0票数 0

在“google.golang.org/ grpc /code”中引入了一些错误,一些错误可以由grpc生成,有些不能生成,grpc流应该对应于http2.0中的流。然后,我想知道这是否意味着当那些grpc流抛出异常时TCP连接有错误,所以我只需要重新连接TCP连接,还是我有一些只用于重新连接流的方法(例如重新连接流,等等)。

代码语言:javascript
复制
    for {
        request, err3 := stream.Recv()
        if err3 == io.EOF {
            return nil
        }
        if err3 != nil {
            return err3  // how can i handle this error (grpc generated)
        }
        do something
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-28 10:05:27

gRPC-go为您处理网络级别的重新连接:https://pkg.go.dev/google.golang.org/grpc#ClientConn

A ClientConn封装了一系列功能,包括名称解析、TCP建立(通过重试和退避)和TLS握手。它还通过重新解析名称和重新连接来处理已建立连接上的错误。

如果错误返回一个错误并且不是io.EOF类型,这意味着出了问题(包括网络错误),您必须请求一个新的流:https://github.com/grpc/grpc-go/blob/master/stream.go#L126,但是您不必担心创建一个新的TCP连接。

RecvMsg阻塞,直到它接收到m中的消息或完成流。当流成功完成时,它返回io.EOF。对于任何其他错误,流将被中止,并且错误包含RPC状态。

如果它不能得到一个新的流,意味着它不能连接到服务器,或者它有什么问题,但是如果它是一个短暂的网络错误,您最终将能够得到一个新的流。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73150796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档