Skip to main content

Lightweight RabbitMQ client helpers (blocking/pika) with Sender and Listener utilities.

Project description

rabbitmq-pika-adapter

Lightweight RabbitMQ client helpers built on pika (sync) and aio-pika (async).

Core API:

  • Sync publish: PublisherPool (recommended)
  • Sync consume: Listener
  • Async publish/consume: AsyncSender, AsyncListener (optional extra)
  • Facade: RabbitMQClient (recommended entrypoint)

Acknowledgements (auto_ack)

Consumers support two acknowledgement modes:

  • auto_ack=False (default): at-least-once delivery. The library will ack after your callback returns successfully, and nack/requeue on exception. Your handler should be idempotent because messages may be redelivered.
  • auto_ack=True (legacy): at-most-once delivery. Messages are considered acknowledged on delivery. If your callback raises or the process crashes mid-processing, RabbitMQ will not redeliver that message.

Recommendation: for most "work queue" style consumers, use auto_ack=False.

See docs/USAGE.md for details and examples.

Installation

From PyPI:

pip install rabbitmq-pika-adapter

Async support:

pip install rabbitmq-pika-adapter[async]

This enables AsyncSender and AsyncListener.

Usage

Recommended entrypoint:

  • RabbitMQClient(...).publisher(...) / .listener(...)

Direct usage (advanced/explicit):

  • Listener(message_type, callback, ...) - thread-based consumer.
  • PublisherPool(message_type, ...) - sync publisher with pooled channels.
  • AsyncListener(message_type, callback, ...) - asyncio-based consumer.
  • AsyncSender(message_type, ...) - asyncio-based publisher.

See examples/usage.py and docs/USAGE.md.

Examples

  • High-throughput sync publish+consume demo (prints stats for both):

    python examples/usage.py throughput

Notes:

  • The repo uses a src/ layout. If you want to run examples without installing the package, examples/usage.py will automatically add src/ to sys.path.

Testing

Install test deps:

pip install -e .[test]

Run unit tests:

python -m pytest -q

Integration tests (no Docker)

Integration tests are opt-in and require a reachable RabbitMQ. Set env vars:

  • RABBITMQ_HOST (or RABBITMQ_SERVER)
  • RABBITMQ_PORT
  • RABBITMQ_VHOST
  • RABBITMQ_USER
  • RABBITMQ_PASSWORD

Then run:

python -m pytest -m integration -q

Publishing to PyPI

This repo publishes from GitHub Actions:

  • Pushes to develop publish to TestPyPI.
  • Pushes to release publish to PyPI.

Manual build/publish:

python -m pip install build twine
python -m build
python -m twine check dist/*
python -m twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rabbitmq_pika_adapter-0.1.2.tar.gz (37.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rabbitmq_pika_adapter-0.1.2-py3-none-any.whl (30.6 kB view details)

Uploaded Python 3

File details

Details for the file rabbitmq_pika_adapter-0.1.2.tar.gz.

File metadata

  • Download URL: rabbitmq_pika_adapter-0.1.2.tar.gz
  • Upload date:
  • Size: 37.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for rabbitmq_pika_adapter-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e263737ebb6cddbdabf60f02952d68feb4927e4ddfcbf88b882eabb9d15dbe82
MD5 e7975ff180cbc875fd9809c97bb8c7d3
BLAKE2b-256 a4d40a5c7a6f9cd8b3cd411b2bbf42447f62a963ab222584350f74e97d668e0c

See more details on using hashes here.

File details

Details for the file rabbitmq_pika_adapter-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for rabbitmq_pika_adapter-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5dfd4c766448fb5fe5e90c3255a9d70e10ba49471fa0326114b57630725c2722
MD5 e66c521956dc9b85b119dbe8b9be1183
BLAKE2b-256 bb7fe8cb048155ce16730c56fa3b2b89e0c0e3204844572335185f24011031db

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page