use std::time::Duration;
use apalis_core::backend::{
poll_strategy::{BackoffConfig, IntervalStrategy, MultiStrategy, StrategyBuilder},
queue::Queue,
};
#[derive(Debug, Clone)]
pub struct Config {
keep_alive: Duration,
buffer_size: usize,
poll_strategy: MultiStrategy,
reenqueue_orphaned_after: Duration,
queue: Queue,
ack: bool,
}
impl Default for Config {
fn default() -> Self {
Self {
keep_alive: Duration::from_secs(30),
buffer_size: 10,
poll_strategy: StrategyBuilder::new()
.apply(
IntervalStrategy::new(Duration::from_millis(100))
.with_backoff(BackoffConfig::default()),
)
.build(),
reenqueue_orphaned_after: Duration::from_secs(300), queue: Queue::from("default"),
ack: true,
}
}
}
impl Config {
#[must_use]
pub fn new(queue: &str) -> Self {
Self {
queue: Queue::from(queue),
..Default::default()
}
}
#[must_use]
pub fn with_poll_interval(mut self, strategy: MultiStrategy) -> Self {
self.poll_strategy = strategy;
self
}
#[must_use]
pub fn set_keep_alive(mut self, keep_alive: Duration) -> Self {
self.keep_alive = keep_alive;
self
}
#[must_use]
pub fn set_buffer_size(mut self, buffer_size: usize) -> Self {
self.buffer_size = buffer_size;
self
}
#[must_use]
pub fn keep_alive(&self) -> &Duration {
&self.keep_alive
}
pub fn keep_alive_mut(&mut self) -> &mut Duration {
&mut self.keep_alive
}
#[must_use]
pub fn buffer_size(&self) -> usize {
self.buffer_size
}
#[must_use]
pub fn poll_strategy(&self) -> &MultiStrategy {
&self.poll_strategy
}
pub fn poll_strategy_mut(&mut self) -> &mut MultiStrategy {
&mut self.poll_strategy
}
#[must_use]
pub fn queue(&self) -> &Queue {
&self.queue
}
pub fn queue_mut(&mut self) -> &mut Queue {
&mut self.queue
}
#[must_use]
pub fn reenqueue_orphaned_after(&self) -> Duration {
self.reenqueue_orphaned_after
}
pub fn reenqueue_orphaned_after_mut(&mut self) -> &mut Duration {
&mut self.reenqueue_orphaned_after
}
#[must_use]
pub fn set_reenqueue_orphaned_after(mut self, after: Duration) -> Self {
self.reenqueue_orphaned_after = after;
self
}
#[must_use]
pub fn ack(&self) -> bool {
self.ack
}
#[must_use]
pub fn set_ack(mut self, auto_ack: bool) -> Self {
self.ack = auto_ack;
self
}
}