Skip to main content

CircuitBreaker

Struct CircuitBreaker 

Source
pub struct CircuitBreaker { /* private fields */ }
Expand description

Circuit breaker for protecting against cascading failures.

The circuit breaker tracks failures and opens the circuit when the failure threshold is reached, preventing further requests until the reset timeout has elapsed.

Implementations§

Source§

impl CircuitBreaker

Source

pub fn new(config: CircuitBreakerConfig) -> Self

Create a new circuit breaker with the given configuration.

Source

pub fn with_defaults() -> Self

Create a circuit breaker with default configuration.

Source

pub async fn state(&self) -> CircuitState

Get the current circuit state.

Source

pub async fn can_execute(&self) -> bool

Check if the circuit allows requests.

Source

pub async fn call<F, Fut, T>(&self, operation: F) -> Result<T>
where F: FnOnce() -> Fut, Fut: Future<Output = Result<T>>,

Execute an async operation with circuit breaker protection.

§Errors

Returns TalosError::CircuitOpen if the circuit is open. Returns the operation’s error if it fails.

Source

pub async fn reset(&self)

Manually reset the circuit breaker to closed state.

Source

pub async fn time_until_retry(&self) -> Option<Duration>

Get the time until the circuit can retry (if open).

Source

pub fn failure_count(&self) -> usize

Get the current failure count.

Source

pub fn total_calls(&self) -> u64

Get total number of calls.

Source

pub fn total_failures(&self) -> u64

Get total number of failures.

Source

pub fn total_rejections(&self) -> u64

Get total number of rejections (circuit open).

Source

pub fn failure_rate(&self) -> f64

Get failure rate (0.0 to 1.0).

Source

pub fn config(&self) -> &CircuitBreakerConfig

Get the circuit breaker configuration.

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<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

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

Source§

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>,

Source§

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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