Initial public release of LeanMQ, a simple and efficient message queue system built on Redis Streams.
Features
- **Simple yet powerful API**: Easy to integrate into any Python application
- **Redis Streams foundation**: Leverages Redis's robust and efficient stream implementation
- **Queue management**:
- Create and manage queue pairs (main queue + dead letter queue)
- List, modify, and delete queues
- Track queue information (message counts, pending messages)
- **Message operations**:
- Send messages with optional custom IDs and TTL (time-to-live)
- Retrieve messages with blocking or non-blocking operations
- Acknowledge processed messages
- Delete messages from queues
- Move failed messages to dead letter queues
- Requeue messages from DLQ back to main queue
- **Consumer groups**: Support for multiple consumers processing messages from the same queue
- **Atomic transactions**: Send multiple messages across different queues in a single atomic operation
- **Message tracking**: Track delivery attempts, failures, and processing history
- **Error handling**: Robust handling of connection issues and Redis failures
Installation
pip install leanmq
Quick Start
python
from leanmq import LeanMQ
Initialize with Redis connection details
mq = LeanMQ(redis_host="localhost", redis_port=6379)
Create a queue pair (main queue and dead letter queue)
main_queue, dlq = mq.create_queue_pair("notifications")
Send a message
msg_id = main_queue.send_message({"type": "email", "recipient": "userexample.com"})
Get messages
messages = main_queue.get_messages(count=5)
Process messages
for msg in messages:
try:
Process message...
main_queue.acknowledge_messages([msg.id])
except Exception as e:
main_queue.move_to_dlq([msg.id], f"Error: {e}", dlq)
Requirements
- Python 3.11+
- Redis 5.0+ (for Streams support)
License
Apache-2.0