关于将RetryPolicy与表存储一起使用的几个问题,
最好尽可能使用RetryPolicy,因此,只要你可以使用ctx.SaveChangeWithRetries()而不是ctx.SaveChanges()吗?
当您使用RetryPolicy时,例如,
ctx.RetryPolicy = RetryPolicies.Retry(5,TimeSpan.FromSeconds(1));
人们通常会为retryCount和TimeSpan使用什么值?我看到5次重试和1秒TimeSpan是一个受欢迎的选择,但是每次重试1秒会不会太长?
谢谢,
雷
答案 0 :(得分:2)
我认为这在很大程度上取决于您的应用和要求。 ATS的超时错误很少发生,如果重试策略不会受到影响并且很少被利用。但是,如果发生了一些可疑的事情,它可能使您不必调试奇怪的错误。
现在,我建议您在开始时根本不启用RetryPolicy并进行跟踪,以便您可以看到持久性到ATS的任何问题。一旦你稳定了,放置一个RetryPolicy可能是一个好主意,可以解决ATS方面的一些运行时故障。只要确保你没有用RetryPolicy屏蔽你自己的问题。
答案 1 :(得分:1)
如果您的客户端是面向网页的用户,您可能希望在每次重试之间使用短等待(毫秒)的线性重试,如果您的客户端实际上是面向后端服务的非用户等,那么您最多可能希望使用指数重试,以便在由于高负载而已经给出5xx错误的情况下不会使表存储服务过载。
使用最新的Azure存储客户端SDK,如果未通过TableRequestOptions在表请求中定义任何重试策略,则使用默认的重试策略,即指数重试。对于它认为可重复的错误,sdk总共进行了3次重试,如果所有重试都失败,则总共需要20秒。