[This topic is part of the Microsoft Azure Storage Client Library 1.7, which has been deprecated. See Storage Client Library for the latest version.]
Returns a policy that retries a specified number of times with a randomized exponential backoff scheme, using specified minimum and maximum backoff values. Namespace: Microsoft.WindowsAzure.StorageClient
Assembly: Microsoft.WindowsAzure.StorageClient (in Microsoft.WindowsAzure.StorageClient.dll)
Returns a policy that retries a specified number of times with a randomized exponential backoff scheme, using specified minimum and maximum backoff values. Namespace: Microsoft.WindowsAzure.StorageClient
Assembly: Microsoft.WindowsAzure.StorageClient (in Microsoft.WindowsAzure.StorageClient.dll)
Usage
| Visual Basic |
|---|
Dim retryCount As Integer Dim minBackoff As TimeSpan Dim maxBackoff As TimeSpan Dim deltaBackoff As TimeSpan Dim returnValue As RetryPolicy returnValue = RetryPolicies.RetryExponential(retryCount, minBackoff, maxBackoff, deltaBackoff) |
Syntax
| Visual Basic |
|---|
Public Shared Function RetryExponential ( _ retryCount As Integer, _ minBackoff As TimeSpan, _ maxBackoff As TimeSpan, _ deltaBackoff As TimeSpan _ ) As RetryPolicy |
| C# |
|---|
public static RetryPolicy RetryExponential ( int retryCount, TimeSpan minBackoff, TimeSpan maxBackoff, TimeSpan deltaBackoff ) |
| C++ |
|---|
public: static RetryPolicy^ RetryExponential ( int retryCount, TimeSpan minBackoff, TimeSpan maxBackoff, TimeSpan deltaBackoff ) |
| J# |
|---|
| JScript |
|---|
Parameters
- retryCount
Type: System.Int32
A non-negative number indicating the number of times to retry.
- minBackoff
Type: System.TimeSpan
The minimum backoff interval.
- maxBackoff
Type: System.TimeSpan
The maximum backoff interval.
- deltaBackoff
Type: System.TimeSpan
The delta backoff value used by the exponential backoff retry policy.
Return Value
Type: Microsoft.WindowsAzure.StorageClient.RetryPolicyThe retry policy.
Remarks
The retry policy returned by RetryExponential performs an exponential backoff determined by the values of minBackoff, maxBackoff, and deltaBackoff.
The RetryExponential method returns a delegate that uses the algorithm shown here:
Copy Code | |
|---|---|
public static RetryPolicy RetryExponential(int retryCount, TimeSpan minBackoff, TimeSpan maxBackoff, TimeSpan deltaBackoff)
{
return () =>
{
return (int currentRetryCount, Exception lastException, out TimeSpan retryInterval) =>
{
if (currentRetryCount < retryCount)
{
Random rand = new Random();
int increment = (int)((Math.Pow(2, currentRetryCount) - 1) * rand.Next((int)(deltaBackoff.TotalMilliseconds * 0.8), (int)(deltaBackoff.TotalMilliseconds * 1.2)));
int timeToSleepMsec = (int)Math.Min(minBackoff.TotalMilliseconds + increment, maxBackoff.TotalMilliseconds);
retryInterval = TimeSpan.FromMilliseconds(timeToSleepMsec);
return true;
}
retryInterval = TimeSpan.Zero;
return false;
};
};
}
| |
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.