pub struct RetryManager {
Policy: RetryPolicy,
Budgets: Arc<Mutex<HashMap<String, RetryBudget>>>,
EventTx: Arc<Sender<RetryEvent>>,
}Expand description
Applies RetryPolicy: computes delays, tracks budgets per service,
classifies errors, and publishes RetryEvents.
Fields§
§Policy: RetryPolicy§Budgets: Arc<Mutex<HashMap<String, RetryBudget>>>§EventTx: Arc<Sender<RetryEvent>>Implementations§
Source§impl RetryManager
impl RetryManager
pub fn new(policy: RetryPolicy) -> Self
pub fn GetEventTransmitter(&self) -> Sender<RetryEvent>
Sourcepub fn CalculateRetryDelay(&self, Attempt: u32) -> Duration
pub fn CalculateRetryDelay(&self, Attempt: u32) -> Duration
Exponential backoff with jitter: base * multiplier^(attempt-1) + jitter.
Sourcepub fn CalculateAdaptiveRetryDelay(
&self,
ErrorType: &str,
attempt: u32,
) -> Duration
pub fn CalculateAdaptiveRetryDelay( &self, ErrorType: &str, attempt: u32, ) -> Duration
Choose delay strategy based on classified error type.
pub fn ClassifyError(&self, ErrorMessage: &str) -> ErrorClass
pub async fn CanRetry(&self, service: &str) -> bool
pub fn PublishRetryEvent(&self, event: RetryEvent)
pub fn ValidatePolicy(&self) -> Result<(), String>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for RetryManager
impl !RefUnwindSafe for RetryManager
impl Send for RetryManager
impl Sync for RetryManager
impl Unpin for RetryManager
impl UnsafeUnpin for RetryManager
impl !UnwindSafe for RetryManager
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
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
Converts
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>
Converts
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].