pub struct MySqlOutboxStore { /* private fields */ }Expand description
MySQL implementation of OutboxStore backed by sqlx::MySqlPool.
Cheap to clone (the pool and the cached SQL strings are reference-counted).
Implementations§
Source§impl MySqlOutboxStore
impl MySqlOutboxStore
Sourcepub fn new(
pool: MySqlPool,
table_name: impl Into<String>,
) -> Result<Self, OutboxError>
pub fn new( pool: MySqlPool, table_name: impl Into<String>, ) -> Result<Self, OutboxError>
Build a store for the given pool and table.
§Errors
Returns OutboxError::Internal if table_name is not a valid
identifier matching ^[a-zA-Z_][a-zA-Z0-9_]*$.
Sourcepub fn table_name(&self) -> &str
pub fn table_name(&self) -> &str
Configured table name.
Sourcepub fn with_dead_letter(
self,
dlq_table: impl Into<String>,
) -> Result<Self, OutboxError>
pub fn with_dead_letter( self, dlq_table: impl Into<String>, ) -> Result<Self, OutboxError>
Activate dead-letter persistence for poison messages.
§Errors
Returns OutboxError::Internal if dlq_table is not a valid identifier.
Trait Implementations§
Source§impl Clone for MySqlOutboxStore
impl Clone for MySqlOutboxStore
Source§fn clone(&self) -> MySqlOutboxStore
fn clone(&self) -> MySqlOutboxStore
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for MySqlOutboxStore
impl Debug for MySqlOutboxStore
Source§impl OutboxStore for MySqlOutboxStore
impl OutboxStore for MySqlOutboxStore
Source§type Client = PoolConnection<MySql>
type Client = PoolConnection<MySql>
Pooled connection guard owned by the worker for one polling cycle.
Source§type Tx<'tx> = Transaction<'tx, MySql>
type Tx<'tx> = Transaction<'tx, MySql>
Transaction borrowed from a
Self::Client.Source§fn acquire<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Self::Client, OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn acquire<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Self::Client, OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Acquire a connection from the underlying pool.
Source§fn begin<'a, 'life0, 'async_trait>(
&'life0 self,
client: &'a mut Self::Client,
) -> Pin<Box<dyn Future<Output = Result<Self::Tx<'a>, OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
fn begin<'a, 'life0, 'async_trait>(
&'life0 self,
client: &'a mut Self::Client,
) -> Pin<Box<dyn Future<Output = Result<Self::Tx<'a>, OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
Open a transaction borrowing from the given connection.
Source§fn poll<'a, 'life0, 'life1, 'async_trait>(
&'life0 self,
tx: &'life1 mut Self::Tx<'a>,
batch_size: usize,
max_attempts: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<OutboxEnvelope>, OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn poll<'a, 'life0, 'life1, 'async_trait>(
&'life0 self,
tx: &'life1 mut Self::Tx<'a>,
batch_size: usize,
max_attempts: u32,
) -> Pin<Box<dyn Future<Output = Result<Vec<OutboxEnvelope>, OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Poll a batch of pending envelopes, locking them via
FOR UPDATE SKIP LOCKED. Read moreSource§fn mark_delivered<'a, 'life0, 'life1, 'async_trait>(
&'life0 self,
tx: &'life1 mut Self::Tx<'a>,
event_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<(), OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn mark_delivered<'a, 'life0, 'life1, 'async_trait>(
&'life0 self,
tx: &'life1 mut Self::Tx<'a>,
event_id: Uuid,
) -> Pin<Box<dyn Future<Output = Result<(), OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Mark an envelope as successfully delivered.
Source§fn mark_failed<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tx: &'life1 mut Self::Tx<'a>,
event_id: Uuid,
error: &'life2 str,
retry_in: Duration,
) -> Pin<Box<dyn Future<Output = Result<(), OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn mark_failed<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tx: &'life1 mut Self::Tx<'a>,
event_id: Uuid,
error: &'life2 str,
retry_in: Duration,
) -> Pin<Box<dyn Future<Output = Result<(), OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Mark an envelope as failed, recording the error and the backoff delay
before the next retry. Read more
Source§fn commit<'a, 'life0, 'async_trait>(
&'life0 self,
tx: Self::Tx<'a>,
) -> Pin<Box<dyn Future<Output = Result<(), OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
fn commit<'a, 'life0, 'async_trait>(
&'life0 self,
tx: Self::Tx<'a>,
) -> Pin<Box<dyn Future<Output = Result<(), OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
Commit the transaction.
Source§fn mark_dead_lettered<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tx: &'life1 mut Self::Tx<'a>,
event_id: Uuid,
_error: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn mark_dead_lettered<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tx: &'life1 mut Self::Tx<'a>,
event_id: Uuid,
_error: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Move an envelope that has exhausted its retry budget to the dead-letter store. Read more
Source§fn claim<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tx: &'life1 mut Self::Tx<'a>,
event_ids: &'life2 [Uuid],
lease_for: Duration,
) -> Pin<Box<dyn Future<Output = Result<(), OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn claim<'a, 'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
tx: &'life1 mut Self::Tx<'a>,
event_ids: &'life2 [Uuid],
lease_for: Duration,
) -> Pin<Box<dyn Future<Output = Result<(), OutboxError>> + Send + 'async_trait>>where
Self: 'async_trait,
'a: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Claim a batch of envelopes: advance the soft lease and consume one
retry slot. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for MySqlOutboxStore
impl !UnwindSafe for MySqlOutboxStore
impl Freeze for MySqlOutboxStore
impl Send for MySqlOutboxStore
impl Sync for MySqlOutboxStore
impl Unpin for MySqlOutboxStore
impl UnsafeUnpin for MySqlOutboxStore
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 more