2011-11-14 43 views
2

在我迁移到Azure的过程中,我实现在Windows Azure AppFabric的客户顾问团队“TransientFaultHandling框架”。 http://appfabriccat.com/2011/02/transient-fault-handling-framework/SQL Azure重试逻辑框架TransientFaultHandling是否附带默认重试策略?

这是我只是做了我的代码(很容易看起来好得是真实的):

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.OpenWithRetry(retryPolicy())全部换成oConn.Open() 210个全部换成了别人ReaderScalarNonQuery有:

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

4 /这就是它

它的工作原理,我的意思是没有错误,但正在测试我的本地SQL Server,我不知道重试逻辑是否是correc因为我没有意识到测试连接失败的方法,所以实现了Tly。

我读到实施这一TransientFaultHandling框架的几个例子,有的包括用于检测SQL服务器错误代码的自定义创建的类。 我没有创建这样的一个类让事情变得简单,因为我假定框架附带关于重试基于SQL Azure的异常代码的好默认行为。

要提问: - 是我的代码确定在一个典型的SQL Azure的连接失败的情况下?还是我必须设置一个自定义类来自己检测代码异常?

回答

3

瞬态故障处理框架提供了一些重试政策,包括你提到的SQL Azure的一个。你不需要做任何改变就可以做你想做的事情。你看到的例子在那里供参考,所以你可以扩展框架,如果你想将它应用到尚未被照顾的东西上。

+0

完美!谢谢 ! – kdstack