【问题标题】:How to set RetryPolicy when calling _publisherClient.PublishAsync via grpc c# client (for PubSub)通过grpc c#客户端调用_publisherClient.PublishAsync时如何设置RetryPolicy(对于PubSub)
【发布时间】:2020-11-13 08:40:42
【问题描述】:

我们使用 c# 和 Google.Cloud.PubSub.V1 nuget 将消息一一发布到 google pubsub 服务到给定主题 每隔几分钟我们就会收到错误消息

Grpc.Core.RpcException: Status(StatusCode=Unknown, Detail="Stream removed")

需要设置吗

重试策略

要解决这个问题? (我在github issue python1python 2github issue C# 上看到手动进行客户端重试并不能解决这个问题)所以; 通过grpc c#客户端调用_publisherClient.PublishAsync时如何设置RetryPolicy(用于PubSub)

否则应该通过启用来解决此问题

new ChannelOption("grpc.keepalive_permit_without_calls", 1)

“Stream removed”错误是什么意思?

RpcException - Status Codes(错误代码)

【问题讨论】:

  • 我目前处理这个问题的唯一方法是在客户端代码中重试;重试 4 次,延迟 10 秒;它仍然可能失败,这意味着要么进一步增加延迟重试或进行更多尝试..我认为这不是一个好方法..

标签: c# grpc google-cloud-pubsub


【解决方案1】:

客户端库通常将用户从这些较低级别的问题中抽象出来。

我同意你的观点,C# 库本身应该重新建立流并根据需要重试发布。如果发布者的行为不符合预期,或者您认为应该在底层连接上设置属性,请在https://github.com/googleapis/google-cloud-dotnet/issues 提出问题

【讨论】:

    【解决方案2】:

    这是由于客户端库生成期间的错误导致重试配置未应用。 在此提交问题以修复它:https://github.com/googleapis/google-cloud-dotnet/issues/5225

    更新:此问题现已在 github (https://github.com/googleapis/google-cloud-dotnet/pull/5226) 中修复,预计将于下周(2020-08-03 周)发布。

    【讨论】:

    • 如何在新包(Google.Cloud.PubSub.V1.2.1.0)中配置重试尝试和调用超时?
    猜你喜欢
    • 2021-01-21
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2016-03-23
    • 2018-07-27
    • 2020-08-27
    • 1970-01-01
    相关资源
    最近更新 更多