#[non_exhaustive]
pub struct RetryConfig { /* private fields */ }
Expand description

Retry configuration for requests.

Implementations§

source§

impl RetryConfig

source

pub fn standard() -> RetryConfig

Creates a default RetryConfig with RetryMode::Standard and max attempts of three.

source

pub fn adaptive() -> RetryConfig

Creates a default RetryConfig with RetryMode::Adaptive and max attempts of three.

source

pub fn disabled() -> RetryConfig

Creates a RetryConfig that has retries disabled.

source

pub fn with_retry_mode(self, retry_mode: RetryMode) -> RetryConfig

Set this config’s retry mode.

source

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.

source

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.

source

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
source

pub fn with_max_backoff(self, max_backoff: Duration) -> RetryConfig

Set the maximum backoff time.

source

pub fn with_use_static_exponential_base( self, use_static_exponential_base: bool ) -> RetryConfig

Available on crate feature 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.

source

pub fn mode(&self) -> RetryMode

Returns the retry mode.

source

pub fn reconnect_mode(&self) -> ReconnectMode

Returns the ReconnectMode

source

pub fn max_attempts(&self) -> u32

Returns the max attempts.

source

pub fn initial_backoff(&self) -> Duration

Returns the backoff multiplier duration.

source

pub fn max_backoff(&self) -> Duration

Returns the max backoff duration.

source

pub fn has_retry(&self) -> bool

Returns true if retry is enabled with this config

source

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

source§

fn clone(&self) -> RetryConfig

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for RetryConfig

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl PartialEq for RetryConfig

source§

fn eq(&self, other: &RetryConfig) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Storable for RetryConfig

§

type Storer = StoreReplace<RetryConfig>

Specify how an item is stored in the config bag, e.g. StoreReplace and StoreAppend
source§

impl StructuralPartialEq for RetryConfig

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more