Skip to main content

OutboxConfig

Struct OutboxConfig 

Source
pub struct OutboxConfig<P>
where P: Debug + Clone + Serialize,
{ pub batch_size: u32, pub retention_days: i64, pub gc_interval_secs: u64, pub poll_interval_secs: u64, pub lock_timeout_mins: i64, pub idempotency_strategy: IdempotencyStrategy<P>, pub dlq_threshold: u32, pub dlq_interval_secs: u64, }
Expand description

Runtime configuration shared by the producer and worker sides.

Generic over the user’s domain event payload type P because the Custom strategy variant holds a function pointer of type fn(&Event<P>) -> String.

All fields are public so callers can construct the struct with a literal or start from default and override selected fields.

§Example

use outbox_core::prelude::*;

let cfg: OutboxConfig<MyEvent> = OutboxConfig {
    batch_size: 200,
    poll_interval_secs: 2,
    ..OutboxConfig::default()
};
assert_eq!(cfg.batch_size, 200);
assert_eq!(cfg.retention_days, 7); // inherited from default

Fields§

§batch_size: u32

Maximum number of events fetched per processing iteration.

§retention_days: i64

How long sent events are kept before the garbage collector deletes them, measured in days.

§gc_interval_secs: u64

Interval between garbage-collection passes, in seconds.

§poll_interval_secs: u64

Fallback polling interval for the worker loop, in seconds. Used alongside database LISTEN/notify to guarantee progress even when notifications are missed or unsupported.

§lock_timeout_mins: i64

Duration a row stays locked while a worker processes it, in minutes. Once this timeout elapses, the row becomes eligible to be picked up again (recovering from a crashed or stuck worker).

§idempotency_strategy: IdempotencyStrategy<P>

How idempotency tokens are produced for newly written events. See IdempotencyStrategy for the available variants.

§dlq_threshold: u32

Failure count at which an event becomes eligible for quarantine. Events whose failure counter reaches this value are returned by DlqHeap::drain_exceeded on the next reaper pass.

Only consulted when the dlq feature is enabled.

§dlq_interval_secs: u64

Interval between dead-letter reaper passes, in seconds. Each pass drains events that have crossed dlq_threshold and hands them off for quarantine.

Only consulted when the dlq feature is enabled.

Trait Implementations§

Source§

impl<P> Clone for OutboxConfig<P>
where P: Debug + Clone + Serialize + Clone,

Source§

fn clone(&self) -> OutboxConfig<P>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<P> Default for OutboxConfig<P>
where P: Debug + Clone + Serialize,

Source§

fn default() -> Self

Returns a configuration suitable as a starting point.

The defaults are:

FieldValue
batch_size100
retention_days7
gc_interval_secs3600
poll_interval_secs10
lock_timeout_mins5
idempotency_strategyIdempotencyStrategy::None
dlq_threshold10
dlq_interval_secs300

These values are part of the public contract — tuning them is a deliberate behaviour change.

Auto Trait Implementations§

§

impl<P> Freeze for OutboxConfig<P>

§

impl<P> RefUnwindSafe for OutboxConfig<P>

§

impl<P> Send for OutboxConfig<P>

§

impl<P> Sync for OutboxConfig<P>

§

impl<P> Unpin for OutboxConfig<P>

§

impl<P> UnsafeUnpin for OutboxConfig<P>

§

impl<P> UnwindSafe for OutboxConfig<P>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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