1use std::time::Duration;
2
3use apalis_core::backend::{
4 poll_strategy::{BackoffConfig, IntervalStrategy, MultiStrategy, StrategyBuilder},
5 queue::Queue,
6};
7
8#[derive(Debug, Clone)]
10pub struct Config {
11 keep_alive: Duration,
12 buffer_size: usize,
13 poll_strategy: MultiStrategy,
14 reenqueue_orphaned_after: Duration,
15 queue: Queue,
16 ack: bool,
17}
18
19impl Default for Config {
20 fn default() -> Self {
21 Self {
22 keep_alive: Duration::from_secs(30),
23 buffer_size: 10,
24 poll_strategy: StrategyBuilder::new()
25 .apply(
26 IntervalStrategy::new(Duration::from_millis(100))
27 .with_backoff(BackoffConfig::default()),
28 )
29 .build(),
30 reenqueue_orphaned_after: Duration::from_secs(300), queue: Queue::from("default"),
32 ack: true,
33 }
34 }
35}
36
37impl Config {
38 #[must_use]
40 pub fn new(queue: &str) -> Self {
41 Self {
42 queue: Queue::from(queue),
43 ..Default::default()
44 }
45 }
46
47 #[must_use]
51 pub fn with_poll_interval(mut self, strategy: MultiStrategy) -> Self {
52 self.poll_strategy = strategy;
53 self
54 }
55
56 #[must_use]
60 pub fn set_keep_alive(mut self, keep_alive: Duration) -> Self {
61 self.keep_alive = keep_alive;
62 self
63 }
64
65 #[must_use]
69 pub fn set_buffer_size(mut self, buffer_size: usize) -> Self {
70 self.buffer_size = buffer_size;
71 self
72 }
73
74 #[must_use]
76 pub fn keep_alive(&self) -> &Duration {
77 &self.keep_alive
78 }
79
80 pub fn keep_alive_mut(&mut self) -> &mut Duration {
82 &mut self.keep_alive
83 }
84
85 #[must_use]
87 pub fn buffer_size(&self) -> usize {
88 self.buffer_size
89 }
90
91 #[must_use]
93 pub fn poll_strategy(&self) -> &MultiStrategy {
94 &self.poll_strategy
95 }
96
97 pub fn poll_strategy_mut(&mut self) -> &mut MultiStrategy {
99 &mut self.poll_strategy
100 }
101
102 #[must_use]
104 pub fn queue(&self) -> &Queue {
105 &self.queue
106 }
107
108 pub fn queue_mut(&mut self) -> &mut Queue {
110 &mut self.queue
111 }
112
113 #[must_use]
115 pub fn reenqueue_orphaned_after(&self) -> Duration {
116 self.reenqueue_orphaned_after
117 }
118
119 pub fn reenqueue_orphaned_after_mut(&mut self) -> &mut Duration {
121 &mut self.reenqueue_orphaned_after
122 }
123
124 #[must_use]
129 pub fn set_reenqueue_orphaned_after(mut self, after: Duration) -> Self {
130 self.reenqueue_orphaned_after = after;
131 self
132 }
133
134 #[must_use]
137 pub fn ack(&self) -> bool {
138 self.ack
139 }
140
141 #[must_use]
143 pub fn set_ack(mut self, auto_ack: bool) -> Self {
144 self.ack = auto_ack;
145 self
146 }
147}