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::Endis receivedmax_retriesis 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>
impl<T> RetryActor<T>
Sourcepub const fn new(
target: T,
message: T::Message,
retry_strategy: Strategy,
) -> Self
pub const fn new( target: T, message: T::Message, retry_strategy: Strategy, ) -> Self
Create a new RetryActor.
Sourcepub fn new_with_parent_message<P>(
target: T,
message: T::Message,
retry_strategy: Strategy,
completion_message: P::Message,
) -> Self
pub fn new_with_parent_message<P>( target: T, message: T::Message, retry_strategy: Strategy, completion_message: P::Message, ) -> Self
Creates a RetryActor that notifies its parent with completion_message
when the retry cycle finishes, either because:
- the retry budget is exhausted
RetryMessage::Endstops it explicitly- the managed child no longer accepts messages
Trait Implementations§
Source§impl<T> Actor for RetryActor<T>
impl<T> Actor for RetryActor<T>
Source§type Message = RetryMessage
type Message = RetryMessage
The type of messages this actor accepts.
Source§fn get_span(id: &str, _parent_span: Option<Span>) -> Span
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,
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,
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
fn drain_timeout() -> Duration
Maximum time to spend processing critical messages during shutdown before dropping them.
Source§fn startup_timeout() -> Option<Duration>
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>
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
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,
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,
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§impl<T> Handler<RetryActor<T>> for RetryActor<T>
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,
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,
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,
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,
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 moreSource§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,
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
impl<T> NotPersistentActor for RetryActor<T>
Auto Trait Implementations§
impl<T> Freeze for RetryActor<T>
impl<T> !RefUnwindSafe for RetryActor<T>
impl<T> Send for RetryActor<T>
impl<T> Sync for RetryActor<T>
impl<T> Unpin for RetryActor<T>
impl<T> UnsafeUnpin for RetryActor<T>
impl<T> !UnwindSafe for RetryActor<T>
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