pub struct SqliteOutboxStore { /* private fields */ }Expand description
SQLite implementation of OutboxStore backed by sqlx::SqlitePool.
See the module documentation for the single-worker concurrency model. Cheap to clone (the pool and the cached SQL strings are reference-counted).
Implementations§
Source§impl SqliteOutboxStore
impl SqliteOutboxStore
Sourcepub fn new(
pool: SqlitePool,
table_name: impl Into<String>,
) -> Result<Self, OutboxError>
pub fn new( pool: SqlitePool, 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 pool(&self) -> &SqlitePool
pub fn pool(&self) -> &SqlitePool
Underlying pool.
Sourcepub fn table_name(&self) -> &str
pub fn table_name(&self) -> &str
Configured table name.
Trait Implementations§
Source§impl Clone for SqliteOutboxStore
impl Clone for SqliteOutboxStore
Source§fn clone(&self) -> SqliteOutboxStore
fn clone(&self) -> SqliteOutboxStore
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 SqliteOutboxStore
impl Debug for SqliteOutboxStore
Source§impl OutboxStore for SqliteOutboxStore
impl OutboxStore for SqliteOutboxStore
Source§type Client = PoolConnection<Sqlite>
type Client = PoolConnection<Sqlite>
Pooled connection guard owned by the worker for one polling cycle.
Source§type Tx<'tx> = Transaction<'tx, Sqlite>
type Tx<'tx> = Transaction<'tx, Sqlite>
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 SqliteOutboxStore
impl !RefUnwindSafe for SqliteOutboxStore
impl Send for SqliteOutboxStore
impl Sync for SqliteOutboxStore
impl Unpin for SqliteOutboxStore
impl UnsafeUnpin for SqliteOutboxStore
impl !UnwindSafe for SqliteOutboxStore
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