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.0.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.0-py3-none-any.whl (30.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rabbitmq_pika_adapter-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 c2d646d4b884d7b350b2780f76c03bdf3df04612db653fa4847ffa0ed3fa3128
MD5 411ba947f835378c7a33a09360a14c50
BLAKE2b-256 c5e8c0caf95d199e580267d53048010f1fd3def504ef1beb39907d1a33e1920a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rabbitmq_pika_adapter-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 54e8935f8f4f3bd500e72095035f3806070ebfcfa7cb7d2660af2476f0e2e90a
MD5 cac30f89392be97171b0048fcb8775fd
BLAKE2b-256 22671d706a7bd8bf41a16876b64534924316c3c6e08da0fe60606049f99074a5

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