Skip to main content

An abstract interface for RabbitMQ communication

Project description

b-rabbit-icon https://img.shields.io/pypi/v/b-rabbit.svg https://img.shields.io/travis/nidhaloff/b_rabbit.svg https://readthedocs.org/projects/b-rabbit/badge/?version=latest PyPI - Python Version PyPI - Wheel https://pepy.tech/badge/b-rabbit Twitter URL

RabbitMQ without headache.

b-rabbit is a RabbitMq client library that aims to make interfacing with RabbitMQ easier. It is very useful especially inside large projects, in which many boilerplate code must be written.

I started this project when I was working on a large microservices-based project in a large team. I decided to open-source the project afterwards.

Features

  • it implements all RabbitMQ messaging patterns.

  • provides an easy high level API (take a look at the examples)

  • thread safe

When you should use it

  • if you are having problems with other non thread safe libraries (like I did)

  • if you want to develop fast by using a high level API

  • if you don’t want to write much code and save much time

  • if you want to use multithreading

Quick Usage

import the library:

from b_rabbit import BRabbit

create a parent instance which provide a global rabbitMQ connection

rabbit = BRabbit(host='localhost', port=5672)

now, just one liner to publish a message:

publisher = rabbit.EventPublisher(b_rabbit=rabbit,
                                  publisher_name='pub').publish(routing_key='testing.test',
                                                                payload='Hello from publisher')

or if you want to subscribe and listen to a certain topic:

 def callback(msg):
    # do something with the received msg from the publisher
    print(f"msg received: {msg}")

# subscribe and run a listener in a thread

subscriber = rabbit.EventSubscriber(
                                b_rabbit=rabbit,
                                routing_key='testing.test',
                                publisher_name='pub',
                                event_listener=callback).subscribe_on_thread()

Advanced Usage using RPC

  • task requester

from b_rabbit import BRabbit


def taskResponseListener(body):
    print('Task Response received')
    print(str(body))


rabbit = BRabbit(host='localhost', port=5672)
taskRequesterSynchron = rabbit.TaskRequesterSynchron(b_rabbit=rabbit,
                                                     executor_name='test',
                                                     routing_key='testing.test',
                                                     response_listener=taskResponseListener)

taskRequesterSynchron.request_task('msg from requester')
rabbit.close_connection()
  • task responser (server)

from b_rabbit import BRabbit
import time

rabbit = BRabbit(host='localhost', port=5672)


def taskListener(server, body):
    print('Task Request received')
    print(str(body))
    time.sleep(5)
    server.send_return(payload="return this value to requester")


taskExecuter = rabbit.TaskExecutor(b_rabbit=rabbit,
                                   executor_name='test',
                                   routing_key='testing.test',
                                   task_listener=taskListener).run_task_on_thread()

Further

Take a look in the examples folder for more. b_rabbit implements also the remote procedure call (RPC) pattern

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

b_rabbit-1.2.5.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

b_rabbit-1.2.5-py2.py3-none-any.whl (9.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file b_rabbit-1.2.5.tar.gz.

File metadata

  • Download URL: b_rabbit-1.2.5.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for b_rabbit-1.2.5.tar.gz
Algorithm Hash digest
SHA256 ff0d0cf2c667219c5d4ccd3aee30549c51ca9c45667a0479c2631eb00a4a18b4
MD5 aa98ea4a3170f3539fbcb1fb01c2977a
BLAKE2b-256 0eba39057e5e6b3de80dfd4edd492ab367d1929ca967e7bde98571b0e57967a2

See more details on using hashes here.

File details

Details for the file b_rabbit-1.2.5-py2.py3-none-any.whl.

File metadata

  • Download URL: b_rabbit-1.2.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.10

File hashes

Hashes for b_rabbit-1.2.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 55583f18eb5c3657614a96410ac37466f3456f6a2ff8ca0e6de57c328b3aab6d
MD5 decae275c7d1b6fe402da1f6d68d2967
BLAKE2b-256 35488bc3c5f30d8f120a83b365c9914a8741e1f0db267e69bfd746b228e3ebb9

See more details on using hashes here.

Supported by

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