Expand description
RabbitMQ provider implementation using AMQP 0-9-1.
This module provides production-ready RabbitMQ integration via the lapin AMQP client.
It implements the QueueProvider and SessionProvider traits, enabling
RabbitMQ to be used as a drop-in backend within the queue-runtime abstraction layer.
§Key Features
- AMQP 0-9-1: Full native protocol support via the
lapincrate - Persistent queues: Messages survive broker restarts (durable queues, persistent delivery mode)
- Manual acknowledgement: Messages remain unacked until explicitly completed, abandoned, or dead-lettered, giving visibility-timeout-like semantics
- Dead letter exchange (DLX): Nacked messages are routed to a configured DLX, mirroring the DLQ behaviour of other providers
- Session emulation: Sessions are emulated via per-session sub-queues
(
{queue}.session.{session_id}) with exclusive consumers - Batch operations: Up to 100 messages per batch
§Queue Naming
Queues are declared as durable on first use. The naming conventions are:
- Main queue:
{queue_name} - Session queue:
{queue_name}.session.{session_id}
§Dead Letter Routing
When enable_dead_letter is true the provider automatically binds each
queue to the configured dead letter exchange. Messages dead-lettered via
[dead_letter_message] are nacked without requeue, causing RabbitMQ to
forward them through the DLX to the dead letter queue.
§Session Support
Sessions are emulated using per-session sub-queues. Sending a message with a
session_id routes it to {queue}.session.{session_id}. A
RabbitMqSessionProvider holds an exclusive consumer on that sub-queue for
the duration of the session.
§Testing
use queue_runtime::providers::RabbitMqProvider;
use queue_runtime::RabbitMqConfig;
let config = RabbitMqConfig {
url: "amqp://guest:guest@localhost:5672".to_string(),
..RabbitMqConfig::default()
};
let provider = RabbitMqProvider::new(config).await.unwrap();Structs§
- Rabbit
MqConfig - RabbitMQ provider configuration using AMQP 0-9-1
- Rabbit
MqError - RabbitMQ-specific error type that wraps AMQP errors.
- Rabbit
MqProvider - RabbitMQ queue provider using AMQP 0-9-1 via the
lapincrate. - Rabbit
MqSession Provider - Session provider for RabbitMQ backed by an exclusive per-session consumer.