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}