gpt4 book ai didi

c# - 我是否需要同时使用 TransientFaultHandling 和 SaveChangesWithRetries 将数据保存到 Azure 存储中?

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:34 26 4
gpt4 key购买 nike

http://msdn.microsoft.com/en-us/library/hh680905(v=pandp.50).aspx transient 故障处理能够处理连接错误等。

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

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

或者:因为他们正在阻止同样的事情,所以 SaveChangesWithRetries() 就足够了

最佳答案

这很有趣。我根本没想到“ transient 故障处理”(TFS) 指南会与 Windows Azure 存储客户端一起使用。对于 blob 和队列(还有一些表操作),已经有默认的重试策略。因此,如果您要结合使用 TFS 策略,我肯定会删除默认情况下存储客户端上的重试策略(使用 Retry.NoRetry)(这是每次 30 秒内的指数退避,4 次重试策略) .

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

关于c# - 我是否需要同时使用 TransientFaultHandling 和 SaveChangesWithRetries 将数据保存到 Azure 存储中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9853124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com