我需要TransientFaultHandling和SaveChangesWithRetries将数据保存到Azure存

本文关键字:保存 数据 Azure SaveChangesWithRetries TransientFaultHandling | 更新日期: 2023-09-27 18:28:58

http://msdn.microsoft.com/en-us/library/hh680905(v=pandp.50).aspx瞬态故障处理提供了处理连接错误等的能力。

SaveChangesWithRetries()表示,它也可以在出现故障时重试。

我想知道,我需要在SaveChangesWithRetries上使用TransientFaultHandling包装吗;

或者:因为它们正在阻止相同的事情,所以SaveChangesWithRetries()足够

我需要TransientFaultHandling和SaveChangesWithRetries将数据保存到Azure存

这很有趣。我根本没有想到"瞬态故障处理"(TFS)指南会与Windows Azure Storage客户端一起使用。对于Blob和队列(也有一些表操作),它上已经有一个默认的重试策略。因此,如果您要同时使用TFS策略,我肯定会删除默认情况下存储客户端上的重试策略(使用Retry.NoRetry)(这是一个30内的指数退避,请参阅每个4次重试策略)。

尽管如此,我在实践中发现,Windows Azure存储的重试策略被证明比无用更糟糕(即,你最好根本不使用它们)。如果没有指定一个非常自定义的重试策略,它们实际上根本无法正常工作。注意,我在这里谈论的是存储,而不是SQL Azure。由于您使用的是基于REST的协议,因此在重试策略有意义的地方,没有可以"重置"的有状态连接。你最终看到的大多数错误(>90%来自经验)都是你无论如何都不想重试的错误。例如,大多数失败都是403被禁止、DNS解析失败、404错误等。几乎无一例外,你永远不想重试这些错误(例如,如果你的凭据不好,为什么还要再尝试4次?)。在大多数情况下,最终发生的情况是,您正在重试一个永远不会成功的错误,并且您浪费了大约2分钟(每次重试4次,每次30秒)才最终放弃。我的建议是简单地禁用策略,只处理异常。