Skip to main content

RetryActor

Struct RetryActor 

Source
pub struct RetryActor<T>{ /* private fields */ }
Expand description

Retry actor.

RetryActor re-sends the same message to a managed child actor according to the configured schedule. A successful tell() does not end the sequence by itself; retries continue until:

  • RetryMessage::End is received
  • max_retries is reached
  • the target child can no longer accept messages

The retry cycle can only be started once with RetryMessage::Retry. Any later Retry messages are ignored.

RetryMessage::End is always terminal:

  • before the cycle starts, it stops the actor without sending the target message
  • while a retry is scheduled, it cancels the pending retry and finishes the cycle

Implementations§

Source§

impl<T> RetryActor<T>

Source

pub const fn new( target: T, message: T::Message, retry_strategy: Strategy, ) -> Self

Create a new RetryActor.

Source

pub fn new_with_parent_message<P>( target: T, message: T::Message, retry_strategy: Strategy, completion_message: P::Message, ) -> Self
where P: Actor + Handler<P>,

Creates a RetryActor that notifies its parent with completion_message when the retry cycle finishes, either because:

  • the retry budget is exhausted
  • RetryMessage::End stops it explicitly
  • the managed child no longer accepts messages

Trait Implementations§

Source§

impl<T> Actor for RetryActor<T>

Source§

type Message = RetryMessage

The type of messages this actor accepts.
Source§

type Response = ()

The type returned by the actor in response to each message.
Source§

type Event = ()

The type of events this actor can broadcast to subscribers.
Source§

fn get_span(id: &str, _parent_span: Option<Span>) -> Span

Creates the tracing span for this actor instance. Read more
Source§

fn pre_start<'life0, 'life1, 'async_trait>( &'life0 mut self, ctx: &'life1 mut ActorContext<Self>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Called once before the actor begins processing messages. Read more
Source§

fn pre_stop<'life0, 'life1, 'async_trait>( &'life0 mut self, _ctx: &'life1 mut ActorContext<Self>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Called when the actor is about to stop, before children are stopped. Read more
Source§

fn drain_timeout() -> Duration

Maximum time to spend processing critical messages during shutdown before dropping them.
Source§

fn startup_timeout() -> Option<Duration>

Maximum time to wait for pre_start to complete; None disables the startup timeout.
Source§

fn stop_timeout() -> Option<Duration>

Maximum time a parent waits for this actor to acknowledge a stop request; None disables the stop timeout.
Source§

fn supervision_strategy() -> SupervisionStrategy

Returns the supervision strategy applied when this actor fails at startup.
Source§

fn pre_restart<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, ctx: &'life1 mut ActorContext<Self>, _error: Option<&'life2 Error>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Called when the actor is about to be restarted after a failure. Read more
Source§

fn post_stop<'life0, 'life1, 'async_trait>( &'life0 mut self, _ctx: &'life1 mut ActorContext<Self>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Called after all children have stopped and the actor is fully shut down. Override for final cleanup.
Source§

fn from_response(_response: Self::Response) -> Result<Self::Event, Error>

Maps a handler response to an event; call explicitly when you need that conversion.
Source§

impl<T> Handler<RetryActor<T>> for RetryActor<T>

Source§

fn handle_message<'life0, 'life1, 'async_trait>( &'life0 mut self, _path: ActorPath, message: RetryMessage, ctx: &'life1 mut ActorContext<Self>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Processes msg sent by sender and returns a response. Read more
Source§

fn on_event<'life0, 'life1, 'async_trait>( &'life0 mut self, _event: A::Event, _ctx: &'life1 mut ActorContext<A>, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Called when the actor wants to apply an event to its own state; not invoked automatically by the runtime.
Source§

fn on_child_error<'life0, 'life1, 'async_trait>( &'life0 mut self, error: Error, _ctx: &'life1 mut ActorContext<A>, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Called when a child actor reports an error via ActorContext::emit_error. Read more
Source§

fn on_child_fault<'life0, 'life1, 'async_trait>( &'life0 mut self, error: Error, _ctx: &'life1 mut ActorContext<A>, ) -> Pin<Box<dyn Future<Output = ChildAction> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Called when a child actor fails unrecoverably (panics or exhausts retries). Read more
Source§

impl<T> NotPersistentActor for RetryActor<T>

Auto Trait Implementations§

§

impl<T> Freeze for RetryActor<T>
where T: Freeze, <T as Actor>::Message: Freeze,

§

impl<T> !RefUnwindSafe for RetryActor<T>

§

impl<T> Send for RetryActor<T>

§

impl<T> Sync for RetryActor<T>

§

impl<T> Unpin for RetryActor<T>
where T: Unpin, <T as Actor>::Message: Unpin,

§

impl<T> UnsafeUnpin for RetryActor<T>
where T: UnsafeUnpin, <T as Actor>::Message: UnsafeUnpin,

§

impl<T> !UnwindSafe for RetryActor<T>

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<A> IntoActor<A> for A

Source§

fn into_actor(self) -> A

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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