pub struct OutboxConfig<P>{
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 defaultFields§
§batch_size: u32Maximum number of events fetched per processing iteration.
retention_days: i64How long sent events are kept before the garbage collector deletes them, measured in days.
gc_interval_secs: u64Interval between garbage-collection passes, in seconds.
poll_interval_secs: u64Fallback 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: i64Duration 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: u32Failure 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: u64Interval 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>
impl<P> Clone for OutboxConfig<P>
Source§fn clone(&self) -> OutboxConfig<P>
fn clone(&self) -> OutboxConfig<P>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<P> Default for OutboxConfig<P>
impl<P> Default for OutboxConfig<P>
Source§fn default() -> Self
fn default() -> Self
Returns a configuration suitable as a starting point.
The defaults are:
| Field | Value |
|---|---|
batch_size | 100 |
retention_days | 7 |
gc_interval_secs | 3600 |
poll_interval_secs | 10 |
lock_timeout_mins | 5 |
idempotency_strategy | IdempotencyStrategy::None |
dlq_threshold | 10 |
dlq_interval_secs | 300 |
These values are part of the public contract — tuning them is a deliberate behaviour change.