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.
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,
next_retry_at: SystemTime,
) -> 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,
next_retry_at: SystemTime,
) -> 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, incrementing attempts and setting next retry.
Auto Trait Implementations§
impl Freeze for MySqlOutboxStore
impl !RefUnwindSafe for MySqlOutboxStore
impl Send for MySqlOutboxStore
impl Sync for MySqlOutboxStore
impl Unpin for MySqlOutboxStore
impl UnsafeUnpin for MySqlOutboxStore
impl !UnwindSafe 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