pub struct RetryConfig {
pub max_retries: u32,
pub mechanism: RetryMechanism,
pub delay_strategy: DelayStrategy,
pub dead_letter_exchange: Option<String>,
pub dead_letter_queue: Option<String>,
pub dlq_ttl: Option<Duration>,
}Expand description
Simple retry configuration
Fields§
§max_retries: u32Maximum number of retry attempts (0 means no retries)
mechanism: RetryMechanismRetry mechanism to use
delay_strategy: DelayStrategyStrategy for delaying retry messages (TTL or DelayedExchange)
dead_letter_exchange: Option<String>Dead letter exchange for messages that exceed max retries If None, uses default: “{queue_name}.dlx”
dead_letter_queue: Option<String>Dead letter queue for permanently failed messages If None, uses default: “{queue_name}.dlq”
dlq_ttl: Option<Duration>TTL for dead letter queue (auto-cleanup failed messages after this duration) If set, messages in DLQ will be automatically removed after TTL expires Example: Duration::from_secs(86400) = 1 day
Implementations§
Source§impl RetryConfig
impl RetryConfig
Sourcepub fn exponential_default() -> Self
pub fn exponential_default() -> Self
Create exponential retry: 1s -> 2s -> 4s -> 8s -> 16s (max 5 retries)
Sourcepub fn exponential(
max_retries: u32,
base_delay: Duration,
max_delay: Duration,
) -> Self
pub fn exponential( max_retries: u32, base_delay: Duration, max_delay: Duration, ) -> Self
Create exponential retry with custom parameters
Sourcepub fn linear(max_retries: u32, delay: Duration) -> Self
pub fn linear(max_retries: u32, delay: Duration) -> Self
Create linear retry: same delay for each attempt
Sourcepub fn custom(delays: Vec<Duration>) -> Self
pub fn custom(delays: Vec<Duration>) -> Self
Create custom retry with specific delays for each attempt
Sourcepub fn with_dead_letter(self, exchange: String, queue: String) -> Self
pub fn with_dead_letter(self, exchange: String, queue: String) -> Self
Set custom dead letter exchange and queue names
Sourcepub fn with_delay_strategy(self, strategy: DelayStrategy) -> Self
pub fn with_delay_strategy(self, strategy: DelayStrategy) -> Self
Set delay strategy to use (TTL or DelayedExchange)
Sourcepub fn with_dlq_ttl(self, ttl: Duration) -> Self
pub fn with_dlq_ttl(self, ttl: Duration) -> Self
Set TTL for dead letter queue (auto-cleanup failed messages) Messages in DLQ will be automatically removed after this duration
§Example
let config = RetryConfig::exponential_default()
.with_dlq_ttl(Duration::from_secs(86400)); // 1 daySourcepub fn calculate_delay(&self, attempt: u32) -> Option<Duration>
pub fn calculate_delay(&self, attempt: u32) -> Option<Duration>
Calculate delay for a specific retry attempt (0-indexed)
Sourcepub fn get_dead_letter_exchange(&self, queue_name: &str) -> String
pub fn get_dead_letter_exchange(&self, queue_name: &str) -> String
Get dead letter exchange name (with fallback to default)
Sourcepub fn get_dead_letter_queue(&self, queue_name: &str) -> String
pub fn get_dead_letter_queue(&self, queue_name: &str) -> String
Get dead letter queue name (with fallback to default)
Sourcepub fn get_retry_queue_name(&self, queue_name: &str, attempt: u32) -> String
pub fn get_retry_queue_name(&self, queue_name: &str, attempt: u32) -> String
Generate retry queue name for delayed messages
Sourcepub fn get_delay_exchange(&self, queue_name: &str) -> String
pub fn get_delay_exchange(&self, queue_name: &str) -> String
Get delay exchange name (for delayed exchange strategy)
Trait Implementations§
Source§impl Clone for RetryConfig
impl Clone for RetryConfig
Source§fn clone(&self) -> RetryConfig
fn clone(&self) -> RetryConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more