持久的 grpc 流式 RPC 和退避策略

时间:2021-07-01 23:11:37

标签: grpc grpc-go

我已经用 gRPC 实现了一个订阅模式 RPC (

  rpc SubscribeX(SubscribeXRequest) returns (stream X)

) 使用 grpc-go。在客户端,如果连接有问题,我想重新订阅。我不确定在创建频道时是否应该使用他们的退避机制(现在称为 ConnectParams),否则在重新连接时它不会让我重新订阅。有没有办法监听 ClientConn 状态变化?推荐的实施方式?或类似使用模式的示例?

1 个答案:

答案 0 :(得分:0)

退避配置控制连接退避,而不是直接在 RPC 上。在大多数情况下,您不想更改它(如果连接出现问题,更频繁地重试无济于事)。

要重试 RPC,请查看以下内容:https://github.com/grpc/grpc-go/blob/master/examples/features/retry/README.md

或者,如果您想盲目地重试它们,请将 RPC 设为 WaitForReady(true) 并将它们包装在 for 循环中。