【问题标题】:Does SQL Azure retry logic framework TransientFaultHandling ships with default retry policies?SQL Azure 重试逻辑框架 TransientFaultHandling 是否附带默认重试策略?
【发布时间】:2014-06-23 19:19:01
【问题描述】:

在迁移到 Azure 的过程中,我实施了 Windows Azure AppFabric 客户咨询团队“TransientFaultHandling 框架”。 http://appfabriccat.com/2011/02/transient-fault-handling-framework/

这是我对代码所做的简单操作(如此简单,看起来好得令人难以置信):

1/ 在我的项目中引用Microsoft.AzureCAT.Samples.TransientFaultHandling.dll(带有自动导入的命名空间)

2/ 在一个公共 DLL 库上设置一个公共函数,该函数返回一个公共策略:

Public Shared Function retryPolicy() As RetryPolicy

    Dim oPolicy As RetryPolicy = New RetryPolicy(Of SqlAzureTransientErrorDetectionStrategy)(10, TimeSpan.FromMilliseconds(100))
    Return oPolicy

End Function

3/ 将所有oConn.Open() 替换为oConn.OpenWithRetry(retryPolicy()) 并将所有其他 ReaderScalarNonQuery 替换为:

  • oCmd.ExecuteReaderWithRetry(retryPolicy())
  • oCmd.ExecuteNonQueryWithRetry(retryPolicy())
  • oCmd.ExecuteScalarWithRetry(retryPolicy())

4/ 就是这样

它可以工作,我的意思是没有错误,但是当我针对我的本地 SQL Server 进行测试时,我不知道重试逻辑是否正确实现,因为我不知道测试连接失败的方法.

我阅读了一些实现这个 TransientFaultHandling 框架的示例,其中一些包括一个自定义创建的类,用于检测 SQL 服务器错误代码。 我没有创建这样一个类来保持简单,因为我假设框架附带了一个很好的默认行为,关于基于 SQL Azure 异常代码的重试。

问题: - 如果经典 SQL Azure 连接失败,我的代码是否正常?还是我必须自己设置一个自定义类来检测代码异常?

【问题讨论】:

    标签: azure azure-sql-database


    【解决方案1】:

    瞬态故障处理框架附带了一些重试策略,包括您提到的 SQL Azure 策略。您不需要对其进行任何更改即可执行您希望它执行的操作。您看到的示例可供参考,因此如果您想将框架应用于尚未满足的内容,您可以扩展框架。

    【讨论】:

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