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 None,
35}