pub struct OutboxForwarder { /* private fields */ }Expand description
Forwarder that drains the transactional outbox and publishes records.
Typical flow:
1. Application writes domain rows and enqueues an outbox event in the same DB transaction.
2. After commit, `OutboxForwarder` publishes the event to Kafka/Redpanda.
3. Once the broker acknowledges the write, the forwarder marks the outbox row as published.
This mirrors the transactional outbox pattern (see microservices.io) and provides
at-least-once delivery. When configured with a Kafka `transactional.id`, the forwarder
wraps each batch in a producer transaction for effectively-exactly-once semantics.Implementations§
Auto Trait Implementations§
impl Freeze for OutboxForwarder
impl !RefUnwindSafe for OutboxForwarder
impl Send for OutboxForwarder
impl Sync for OutboxForwarder
impl Unpin for OutboxForwarder
impl !UnwindSafe for OutboxForwarder
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request