Skip to main content

QueueSet

Trait QueueSet 

Source
pub trait QueueSet:
    Copy
    + Clone
    + Eq
    + Hash
    + Debug
    + Send
    + Sync
    + 'static {
    // Required methods
    fn all() -> &'static [Self];
    fn name(&self) -> &'static str;
    fn config(&self) -> QueueConfig;

    // Provided method
    fn from_name(name: &str) -> Option<Self> { ... }
}
Expand description

A closed set of queues, normally an enum with #[derive(Queues)] from the macros crate; the hand-written equivalent is:

use queuey_core::{QueueConfig, QueueSet, RetryPolicy};

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
enum AppQueues { Emails, Images }

impl QueueSet for AppQueues {
    fn all() -> &'static [Self] { &[AppQueues::Emails, AppQueues::Images] }
    fn name(&self) -> &'static str {
        match self { AppQueues::Emails => "myapp.emails", AppQueues::Images => "myapp.img" }
    }
    fn config(&self) -> QueueConfig {
        match self {
            AppQueues::Emails => QueueConfig::new(self.name()).prefetch(10),
            AppQueues::Images => QueueConfig::new(self.name()).retry(RetryPolicy::exponential(3)),
        }
    }
}

assert_eq!(AppQueues::from_name("myapp.img"), Some(AppQueues::Images));
assert_eq!(AppQueues::Emails.config().prefetch, 10);

Required Methods§

Source

fn all() -> &'static [Self]

Every variant of the set, in declaration order.

Source

fn name(&self) -> &'static str

Fully-qualified broker queue name for this variant.

Source

fn config(&self) -> QueueConfig

Full configuration for this variant.

Provided Methods§

Source

fn from_name(name: &str) -> Option<Self>

Look up a variant by its broker name.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§