Skip to main content

outbox_core/
config.rs

1use crate::model::Event;
2
3#[derive(Clone)]
4pub struct OutboxConfig {
5    pub batch_size: u32,
6    pub retention_days: i64,
7    pub gc_interval_secs: u64,
8    pub poll_interval_secs: u64,
9    pub lock_timeout_mins: i64,
10
11    pub idempotency_strategy: IdempotencyStrategy
12}
13
14impl Default for OutboxConfig {
15    fn default() -> Self {
16        Self {
17            batch_size: 100,
18            retention_days: 7,
19            gc_interval_secs: 3600,
20            poll_interval_secs: 10,
21            lock_timeout_mins: 5,
22            idempotency_strategy: IdempotencyStrategy::None
23        }
24    }
25}
26
27#[derive(Clone)]
28pub enum IdempotencyStrategy {
29    Provided,
30    Custom(fn(&Event) -> String),
31    Uuid,
32    //TODO:
33    //HashPayload, //BLAKE3
34    None,
35}