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)]
9pub struct Config {
10 keep_alive: Duration,
11 buffer_size: usize,
12 poll_strategy: MultiStrategy,
13 reenqueue_orphaned_after: Duration,
14 queue: Queue,
15 ack: bool,
16}
17
18impl Default for Config {
19 fn default() -> Self {
20 Self {
21 keep_alive: Duration::from_secs(30),
22 buffer_size: 10,
23 poll_strategy: StrategyBuilder::new()
24 .apply(
25 IntervalStrategy::new(Duration::from_millis(100))
26 .with_backoff(BackoffConfig::default()),
27 )
28 .build(),
29 reenqueue_orphaned_after: Duration::from_secs(300), queue: Queue::from("default"),
31 ack: true,
32 }
33 }
34}
35
36impl Config {
37 pub fn new(queue: &str) -> Self {
39 Config {
40 queue: Queue::from(queue),
41 ..Default::default()
42 }
43 }
44
45 pub fn with_poll_interval(mut self, strategy: MultiStrategy) -> Self {
49 self.poll_strategy = strategy;
50 self
51 }
52
53 pub fn set_keep_alive(mut self, keep_alive: Duration) -> Self {
57 self.keep_alive = keep_alive;
58 self
59 }
60
61 pub fn set_buffer_size(mut self, buffer_size: usize) -> Self {
65 self.buffer_size = buffer_size;
66 self
67 }
68
69 pub fn keep_alive(&self) -> &Duration {
71 &self.keep_alive
72 }
73
74 pub fn keep_alive_mut(&mut self) -> &mut Duration {
76 &mut self.keep_alive
77 }
78
79 pub fn buffer_size(&self) -> usize {
81 self.buffer_size
82 }
83
84 pub fn poll_strategy(&self) -> &MultiStrategy {
86 &self.poll_strategy
87 }
88
89 pub fn poll_strategy_mut(&mut self) -> &mut MultiStrategy {
91 &mut self.poll_strategy
92 }
93
94 pub fn queue(&self) -> &Queue {
96 &self.queue
97 }
98
99 pub fn queue_mut(&mut self) -> &mut Queue {
101 &mut self.queue
102 }
103
104 pub fn reenqueue_orphaned_after(&self) -> Duration {
106 self.reenqueue_orphaned_after
107 }
108
109 pub fn reenqueue_orphaned_after_mut(&mut self) -> &mut Duration {
111 &mut self.reenqueue_orphaned_after
112 }
113
114 pub fn set_reenqueue_orphaned_after(mut self, after: Duration) -> Self {
119 self.reenqueue_orphaned_after = after;
120 self
121 }
122
123 pub fn ack(&self) -> bool {
124 self.ack
125 }
126
127 pub fn set_ack(mut self, auto_ack: bool) -> Self {
128 self.ack = auto_ack;
129 self
130 }
131}