ExponentialBackOffWithJitter class
Implements an Exponential Backoff with Jitter retry strategy. The function to calculate the next interval is the following (x is the xth retry): F(x) = min(Cmin+ (2^(x-1)-1) * rand(C * (1 – Jd), C*(1-Ju)), Cmax)
Constructors
Exponential |
Initializes a new instance of the ExponentialBackOffWithJitter class. |
Properties
immediate |
Boolean indicating whether the first retry should be immediate (if set to true) or after the normalParameters.c delay (if set to false). |
normal |
Retry parameters used to calculate the delay between each retry in normal situations (ie. not throttled). |
throttled |
Retry parameters used to calculate the delay between each retry in throttled situations. |
Methods
next |
Computes the interval to wait before retrying at each new retry tentative. |
should |
Based on the error passed as argument, determines if an error is transient and if the operation should be retried or not. |
Constructor Details
ExponentialBackOffWithJitter(boolean, ErrorFilter)
Initializes a new instance of the ExponentialBackOffWithJitter class.
new ExponentialBackOffWithJitter(immediateFirstRetry?: boolean, errorFilter?: ErrorFilter)
Parameters
- immediateFirstRetry
-
boolean
boolean indicating whether the first retry should be immediate (default) or wait the first interval (c value).
- errorFilter
-
ErrorFilter
Property Details
immediateFirstRetry
Boolean indicating whether the first retry should be immediate (if set to true) or after the normalParameters.c delay (if set to false).
immediateFirstRetry: boolean
Property Value
boolean
normalParameters
Retry parameters used to calculate the delay between each retry in normal situations (ie. not throttled).
normalParameters: ExponentialBackoffWithJitterParameters
Property Value
ExponentialBackoffWithJitterParameters
throttledParameters
Retry parameters used to calculate the delay between each retry in throttled situations.
throttledParameters: ExponentialBackoffWithJitterParameters
Property Value
ExponentialBackoffWithJitterParameters
Method Details
nextRetryTimeout(number, boolean)
Computes the interval to wait before retrying at each new retry tentative.
function nextRetryTimeout(retryCount: number, isThrottled: boolean): number
Parameters
- retryCount
-
number
Current retry tentative.
- isThrottled
-
boolean
Boolean indicating whether the Azure IoT hub is throttling operations.
Returns
number
The time to wait before attempting a retry in milliseconds.
shouldRetry(Error)
Based on the error passed as argument, determines if an error is transient and if the operation should be retried or not.
function shouldRetry(error: Error): boolean
Parameters
- error
-
Error
The error encountered by the operation.
Returns
boolean
Whether the operation should be retried or not.