Skip to main content

Module rabbitmq

Module rabbitmq 

Source
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 lapin crate
  • 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§

RabbitMqConfig
RabbitMQ provider configuration using AMQP 0-9-1
RabbitMqError
RabbitMQ-specific error type that wraps AMQP errors.
RabbitMqProvider
RabbitMQ queue provider using AMQP 0-9-1 via the lapin crate.
RabbitMqSessionProvider
Session provider for RabbitMQ backed by an exclusive per-session consumer.