apalis_core/mq/
mod.rs

1//! # Message queue
2//!
3//! The `mq` module provides an abstraction for representing a message queue that supports pushing and consuming messages. It defines the MessageQueue trait, which can be implemented by different types of message queues.
4
5use futures::Future;
6
7/// Represents a message queue that can be pushed and consumed.
8pub trait MessageQueue<Message> {
9    /// The error produced by the queue
10    type Error;
11
12    /// Enqueues a message to the queue.
13    fn enqueue(&mut self, message: Message)
14        -> impl Future<Output = Result<(), Self::Error>> + Send;
15
16    /// Attempts to dequeue a message from the queue.
17    /// Returns `None` if the queue is empty.
18    fn dequeue(&mut self) -> impl Future<Output = Result<Option<Message>, Self::Error>> + Send;
19
20    /// Returns the current size of the queue.
21    fn size(&mut self) -> impl Future<Output = Result<usize, Self::Error>> + Send;
22}