问题描述
rpc SubscribeX(SubscribeXRequest) returns (stream X)
) 使用 grpc-go。在客户端,如果连接有问题,我想重新订阅。我不确定在创建频道时是否应该使用他们的退避机制(现在称为 ConnectParams
),否则在重新连接时它不会让我重新订阅。有没有办法监听 ClientConn
状态变化?推荐的实施方式?或类似使用模式的示例?
解决方法
退避配置控制连接退避,而不是直接在 RPC 上。在大多数情况下,您不想更改它(如果连接出现问题,更频繁地重试无济于事)。
要重试 RPC,请查看以下内容:https://github.com/grpc/grpc-go/blob/master/examples/features/retry/README.md
或者,如果您想盲目地重试它们,请将 RPC 设为 WaitForReady(true)
并将它们包装在 for 循环中。