【问题标题】:Can I slow down retry rate in Dapr PubSub我可以减慢 Dapr PubSub 中的重试率吗
【发布时间】:2021-11-04 10:19:10
【问题描述】:

我们在基于微服务的应用程序中使用 Dapr PubSub;我们打算使用 Azure ServiceBus 作为生产中的支持服务。

当我们尝试处理消息时,如果其他服务之一或数据库不可用,那么我们会抛出异常,触发 Dapr 中的重试。我们希望它是健壮的,这样如果依赖关系只是暂时关闭,消息仍然会得到适当的处理。

问题在于它重试真的很快。有没有办法降低重试的速度,使其更像 Dapr 处理微服务之间的请求,在每次失败时增加重试之间的间隔。我们不希望它在快速重试时占用太多资源,而且它对时间要求不高;多花几分钟比不完成更重要。

我们找到了一种方法来限制重试的次数,这样它就不会在消息无效时永远重试,但不是限制重试的方法。

在这种情况下是否可以限制重试次数?

我们在 Linux 容器中的 AKS 上托管的 .Net 5 / Asp.Net Core 中使用 Dapr API。

【问题讨论】:

标签: c# azureservicebus publish-subscribe .net-5 dapr


【解决方案1】:
  • 默认情况下,每 10 秒重试一次。
  • 实施指数重试机制可能会更好。
  • 此机制以增加的间隔重试, 例如首先在 10 秒后,然后是 30 秒,然后是 1 分钟,以此类推。
  • 如果您确实在修改了尝试与服务总线通信时发生错误时发生的重试策略,您可以修改在MessageReciver 本身上设置的RetryPolicy
  • 默认使用RetryExponitial,还有一个抽象的RetryPolicy,您可以从中创建自己的。

更多详情请参考Azure Service Bus Throttling ConditionsRetrying requestsSO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多