0

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

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

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

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

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

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

4

1 回答 1

0
  • 默认情况下,每 10 秒重试一次。
  • 实现指数重试机制可能会更好。
  • 此机制以增加的间隔重试,例如第一次在 10 秒后重试,然后是 30 秒,然后是 1 分钟,依此类推。
  • 如果您确实在修改尝试与服务总线通信时发生错误时发生的重试策略,您可以修改自身RetryPolicy设置的重试策略MessageReciver
  • 有一个RetryExponitial默认使用的,还有一个RetryPolicy您可以创建自己的摘要。

有关更多详细信息,请参阅Azure 服务总线限制条件重试请求SO

于 2021-11-18T07:17:08.753 回答