Lightweight RabbitMQ manager built on top of pika
Project description
Rabbit Manager
Rabbit Manager is a simple, Python-based utility for managing RabbitMQ message queues. It provides an easy-to-use interface for sending, receiving, and processing messages from RabbitMQ queues, with built-in support for automatic reconnections and error handling.
Key Features:
- Send messages to RabbitMQ queues.
- Receive messages from queues with automatic acknowledgement.
- Automatically reconnect on connection loss.
- Easily handle multiple messages and batch operations.
- Supports queue size inspection.
- Iterable interface for message consumption.
This tool is ideal for developers looking to integrate RabbitMQ into their Python applications with minimal overhead.
Requirements
- Python >= 3.10
- Pika (installed via project dependencies)
Install from PyPI (package name: rabbit-manager):
uv add rabbit-manager
or
pip install rabbit-manager
Install for local development with uv (recommended):
uv sync --dev
Alternatively, using pip for editable dev install:
pip install -e ".[dev]"
Quick Start (RabbitManager)
from rabbit_manager import RabbitManager
# Create a manager for a RabbitMQ queue
manager = RabbitManager(
"my_queue", # queue_name (positional argument, required)
username="guest", # keyword-only (required)
password="guest", # keyword-only (required)
host="localhost", # optional, defaults to "localhost"
port=5672, # optional, defaults to 5672
queue_durable=True, # optional, defaults to True
message_ttl_minutes=10, # optional, defaults to 0
confirm_delivery=True, # optional, defaults to True
)
# Use as a context manager to auto-open/close connection
with manager as q:
# Add a message
delivered = q.add("hello world")
print("Delivered:", delivered)
# Check queue size
print("Queue size:", q.size())
# Get one message (non-blocking)
msg = q.get()
print("Got:", msg)
# Block and wait for a message (with optional timeout)
msg2 = q.consume(timeout=5)
print("Consumed:", msg2)
# Manual open/close usage
manager.open()
manager.add("another message")
print("Size:", manager.size())
print("Get:", manager.get())
manager.close()
Notes:
- The example assumes a local RabbitMQ instance on
localhost:5672withguest/guestcredentials. - When
confirm_delivery=True, publishing raises on delivery issues (e.g., unroutable or NACK). message_ttl_minutes>0sets per-queue message TTL.
Testing
Before running tests, activate the virtual environment:
source .venv/bin/activate
Run the test suite:
pytest test.py -v
See more options in TEST_README.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rabbit_manager-0.1.3.tar.gz.
File metadata
- Download URL: rabbit_manager-0.1.3.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bbfb978db30af46b73644415413eeb24beecd1a8283661e17fd8a781caa40b8
|
|
| MD5 |
fe5b1200e785b67852ee4423641981c3
|
|
| BLAKE2b-256 |
bd9e5c5e0881e2889101aa6f05007fb869d72d7c47a5f7e70ea862cffd8c9ea1
|
File details
Details for the file rabbit_manager-0.1.3-py3-none-any.whl.
File metadata
- Download URL: rabbit_manager-0.1.3-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e153afbda9df1ee7c4420c4428464bd1a459c9d9f8509837b96fe7075d169983
|
|
| MD5 |
3e0b873e05613fbb3eb86d86dc9359a4
|
|
| BLAKE2b-256 |
64b0c62ccdc94443f346701198b813da58c076acff6638911d906096f0f204c3
|