Skip to main content

OutboxWorker

Struct OutboxWorker 

Source
pub struct OutboxWorker<S>
where S: OutboxStore,
{ /* private fields */ }
Expand description

Worker that polls the outbox in a loop and dispatches envelopes to their registered handlers.

Generic over any OutboxStore backend. The worker takes ownership of the store and a registry mapping event_type to its ErasedHandler, then [Self::start] spawns the polling task and returns a [JoinHandle].

Implementations§

Source§

impl<S> OutboxWorker<S>
where S: OutboxStore,

Source

pub fn new( store: S, handlers: HashMap<&'static str, Arc<dyn ErasedHandler>>, config: OutboxWorkerConfig, ) -> Self

Build a new worker.

Source

pub fn run( self, cancel: CancellationToken, ) -> Pin<Box<dyn Future<Output = Result<(), OutboxError>> + Send>>
where for<'a> S::Tx<'a>: Send,

Returns the polling loop as a boxed Send future that the caller spawns.

The future resolves to Ok(()) once the supplied CancellationToken is cancelled. Transient store errors are logged via tracing and the loop continues. Typical usage:

let cancel = CancellationToken::new();
let join = tokio::spawn(worker.run(cancel.clone()));
// ...
cancel.cancel();
join.await??;

The return type is boxed to work around a current Rust compiler limitation around HRTB inference on GATs (see rust-lang/rust#100013).

Auto Trait Implementations§

§

impl<S> !RefUnwindSafe for OutboxWorker<S>

§

impl<S> !UnwindSafe for OutboxWorker<S>

§

impl<S> Freeze for OutboxWorker<S>
where S: Freeze,

§

impl<S> Send for OutboxWorker<S>

§

impl<S> Sync for OutboxWorker<S>

§

impl<S> Unpin for OutboxWorker<S>
where S: Unpin,

§

impl<S> UnsafeUnpin for OutboxWorker<S>
where S: UnsafeUnpin,

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