Skip to main content

PublishOptions

Options for publishing messages.
use broccoli_queue::queue::PublishOptions;

Structure

pub struct PublishOptions {
    /// Time-to-live for the message
    pub ttl: Option<Duration>,
    
    /// Message priority (1-5, where 1 is highest)
    pub priority: Option<u8>,
    
    /// Delay before the message is published
    pub delay: Option<Duration>,
    
    /// Scheduled time for message delivery
    pub scheduled_at: Option<OffsetDateTime>,
}

Builder

let options = PublishOptions::builder()
    .delay(Duration::seconds(30))
    .priority(1)
    .ttl(Duration::hours(24))
    .build();

queue.publish("jobs", None, &job, Some(options)).await?;

Methods

builder()

Creates a new PublishOptionsBuilder.
pub const fn builder() -> PublishOptionsBuilder

PublishOptionsBuilder

Builder for constructing PublishOptions.

ttl

Sets the time-to-live for the message.
pub const fn ttl(mut self, duration: Duration) -> Self
Example:
PublishOptions::builder()
    .ttl(Duration::hours(1))
    .build()

priority

Sets the priority level (1-5, where 1 is highest).
pub fn priority(mut self, priority: u8) -> Self
Panics: If priority is not between 1 and 5. Example:
PublishOptions::builder()
    .priority(1)  // High priority
    .build()

delay

Sets a delay before message delivery.
pub const fn delay(mut self, duration: Duration) -> Self
Example:
PublishOptions::builder()
    .delay(Duration::minutes(5))
    .build()

schedule_at

Sets a specific delivery time.
pub const fn schedule_at(mut self, time: OffsetDateTime) -> Self
Example:
use time::OffsetDateTime;

let tomorrow = OffsetDateTime::now_utc() + Duration::days(1);
PublishOptions::builder()
    .schedule_at(tomorrow)
    .build()

build

Builds the PublishOptions.
pub const fn build(self) -> PublishOptions

ConsumeOptions

Options for consuming messages.
use broccoli_queue::queue::ConsumeOptions;

Structure

pub struct ConsumeOptions {
    /// Auto-acknowledge messages (default: false)
    pub auto_ack: Option<bool>,
    
    /// Enable fairness queue consumption (Redis only)
    pub fairness: Option<bool>,
    
    /// Wait duration between consume iterations
    pub consume_wait: Option<std::time::Duration>,
    
    /// Acknowledge after handler success (default: true)
    pub handler_ack: Option<bool>,
}

Builder

let options = ConsumeOptions::builder()
    .fairness(true)
    .auto_ack(false)
    .build();

queue.process_messages("jobs", Some(4), Some(options), handler).await?;

ConsumeOptionsBuilder

Builder for constructing ConsumeOptions.

auto_ack

Sets whether messages are auto-acknowledged.
pub const fn auto_ack(mut self, auto_ack: bool) -> Self
Default: false
If auto_ack is true, calling acknowledge() or reject() will return an error.

fairness

Enables fairness queue consumption (Redis only).
pub const fn fairness(mut self, fairness: bool) -> Self
Example:
ConsumeOptions::builder()
    .fairness(true)
    .build()

consume_wait

Sets the wait duration between consume loop iterations.
pub const fn consume_wait(mut self, consume_wait: std::time::Duration) -> Self
This allows consumer loops to be interrupted by tokio. Example:
ConsumeOptions::builder()
    .consume_wait(std::time::Duration::from_millis(10))
    .build()

handler_ack

Controls automatic acknowledgment after successful handler execution.
pub const fn handler_ack(mut self, followup: bool) -> Self
Default: true Set to false to manually control acknowledgment:
ConsumeOptions::builder()
    .handler_ack(false)
    .build()

build

Builds the ConsumeOptions.
pub const fn build(self) -> ConsumeOptions

RetryStrategy

Configuration for message retry behavior.
use broccoli_queue::queue::RetryStrategy;

Structure

pub struct RetryStrategy {
    /// Whether failed messages should be retried
    pub retry_failed: bool,
    
    /// Maximum number of retry attempts
    pub attempts: Option<u8>,
}

Default

impl Default for RetryStrategy {
    fn default() -> Self {
        Self {
            retry_failed: true,
            attempts: Some(3),
        }
    }
}

Methods

new

Creates a new retry strategy with defaults.
pub const fn new() -> Self

with_attempts

Sets the maximum retry attempts.
pub const fn with_attempts(mut self, attempts: u8) -> Self
Example:
RetryStrategy::new().with_attempts(5)

retry_failed

Enables or disables retrying.
pub const fn retry_failed(mut self, retry_failed: bool) -> Self
Example:
// Disable retries - failures go directly to failed queue
RetryStrategy::new().retry_failed(false)

Usage

let queue = BroccoliQueue::builder("redis://localhost:6379")
    .failed_message_retry_strategy(
        RetryStrategy::new()
            .with_attempts(5)
            .retry_failed(true)
    )
    .build()
    .await?;

QueueStatus (management feature)

Status information for a queue.
#[cfg(feature = "management")]
use broccoli_queue::brokers::management::QueueStatus;

Structure

pub struct QueueStatus {
    pub pending_count: u64,
    pub processing_count: u64,
    pub failed_count: u64,
}

Usage

#[cfg(feature = "management")]
{
    let status = queue.queue_status("jobs".into(), None).await?;
    println!("Pending: {}", status.pending_count);
    println!("Processing: {}", status.processing_count);
    println!("Failed: {}", status.failed_count);
}