#[non_exhaustive]pub struct RetryConfig { /* private fields */ }
Expand description
Retry configuration for requests.
Implementations§
Source§impl RetryConfig
impl RetryConfig
Sourcepub fn standard() -> RetryConfig
pub fn standard() -> RetryConfig
Creates a default RetryConfig
with RetryMode::Standard
and max attempts of three.
Sourcepub fn adaptive() -> RetryConfig
pub fn adaptive() -> RetryConfig
Creates a default RetryConfig
with RetryMode::Adaptive
and max attempts of three.
Sourcepub fn disabled() -> RetryConfig
pub fn disabled() -> RetryConfig
Creates a RetryConfig
that has retries disabled.
Sourcepub fn with_retry_mode(self, retry_mode: RetryMode) -> RetryConfig
pub fn with_retry_mode(self, retry_mode: RetryMode) -> RetryConfig
Set this config’s retry mode.
Sourcepub fn with_max_attempts(self, max_attempts: u32) -> RetryConfig
pub fn with_max_attempts(self, max_attempts: u32) -> RetryConfig
Set the maximum number of times a request should be tried, including the initial attempt. This value must be greater than zero.
Sourcepub fn with_reconnect_mode(self, reconnect_mode: ReconnectMode) -> RetryConfig
pub fn with_reconnect_mode(self, reconnect_mode: ReconnectMode) -> RetryConfig
Set the ReconnectMode
for the retry strategy
By default, when a transient error is encountered, the connection in use will be poisoned. This prevents reusing a connection to a potentially bad host but may increase the load on the server.
This behavior can be disabled by setting ReconnectMode::ReuseAllConnections
instead.
Sourcepub fn with_initial_backoff(self, initial_backoff: Duration) -> RetryConfig
pub fn with_initial_backoff(self, initial_backoff: Duration) -> RetryConfig
Set the multiplier used when calculating backoff times as part of an exponential backoff with jitter strategy. Most services should work fine with the default duration of 1 second, but if you find that your requests are taking too long due to excessive retry backoff, try lowering this value.
§Example
For a request that gets retried 3 times, when initial_backoff is 1 seconds:
- the first retry will occur after 0 to 1 seconds
- the second retry will occur after 0 to 2 seconds
- the third retry will occur after 0 to 4 seconds
For a request that gets retried 3 times, when initial_backoff is 30 milliseconds:
- the first retry will occur after 0 to 30 milliseconds
- the second retry will occur after 0 to 60 milliseconds
- the third retry will occur after 0 to 120 milliseconds
Sourcepub fn with_max_backoff(self, max_backoff: Duration) -> RetryConfig
pub fn with_max_backoff(self, max_backoff: Duration) -> RetryConfig
Set the maximum backoff time.
Sourcepub fn with_use_static_exponential_base(
self,
use_static_exponential_base: bool,
) -> RetryConfig
Available on crate feature test-util
only.
pub fn with_use_static_exponential_base( self, use_static_exponential_base: bool, ) -> RetryConfig
test-util
only.Hint to the retry strategy whether to use a static exponential base.
When a retry strategy uses exponential backoff, it calculates a random base. This causes the retry delay to be slightly random, and helps prevent “thundering herd” scenarios. However, it’s often useful during testing to know exactly how long the delay will be.
Therefore, if you’re writing a test and asserting an expected retry delay,
set this to true
.
Sourcepub fn reconnect_mode(&self) -> ReconnectMode
pub fn reconnect_mode(&self) -> ReconnectMode
Returns the ReconnectMode
Sourcepub fn max_attempts(&self) -> u32
pub fn max_attempts(&self) -> u32
Returns the max attempts.
Sourcepub fn initial_backoff(&self) -> Duration
pub fn initial_backoff(&self) -> Duration
Returns the backoff multiplier duration.
Sourcepub fn max_backoff(&self) -> Duration
pub fn max_backoff(&self) -> Duration
Returns the max backoff duration.
Sourcepub fn use_static_exponential_base(&self) -> bool
pub fn use_static_exponential_base(&self) -> bool
Returns true
if retry strategies should use a static exponential base instead of the
default random base.
To set this value, the test-util
feature must be enabled.
Trait Implementations§
Source§impl Clone for RetryConfig
impl Clone for RetryConfig
Source§fn clone(&self) -> RetryConfig
fn clone(&self) -> RetryConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for RetryConfig
impl Debug for RetryConfig
Source§impl PartialEq for RetryConfig
impl PartialEq for RetryConfig
Source§impl Storable for RetryConfig
impl Storable for RetryConfig
Source§type Storer = StoreReplace<RetryConfig>
type Storer = StoreReplace<RetryConfig>
StoreReplace
and StoreAppend
impl StructuralPartialEq for RetryConfig
Auto Trait Implementations§
impl Freeze for RetryConfig
impl RefUnwindSafe for RetryConfig
impl Send for RetryConfig
impl Sync for RetryConfig
impl Unpin for RetryConfig
impl UnwindSafe for RetryConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more