Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

b-rabbit

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

b-rabbit

An abstract interface for RabbitMQ communication

pipPyPI
Version
1.2.5
Maintainers
1

======== b-rabbit

.. image:: assets/b-rabbit.png :width: 100 :align: center :alt: b-rabbit-icon

.. image:: https://img.shields.io/pypi/v/b-rabbit.svg :target: https://pypi.python.org/pypi/b-rabbit

.. image:: https://img.shields.io/travis/nidhaloff/b_rabbit.svg :target: https://travis-ci.com/nidhaloff/b-rabbit

.. image:: https://readthedocs.org/projects/b-rabbit/badge/?version=latest :target: https://b-rabbit.readthedocs.io/en/latest/?badge=latest

.. image:: https://img.shields.io/pypi/pyversions/b-rabbit :alt: PyPI - Python Version :target: https://b-rabbit.readthedocs.io/en/latest/?badge=latest

.. image:: https://img.shields.io/pypi/wheel/b-rabbit :alt: PyPI - Wheel :target: https://pypi.python.org/pypi/b-rabbit

.. image:: https://pepy.tech/badge/b-rabbit :target: https://pepy.tech/project/b-rabbit

.. image:: https://img.shields.io/twitter/url?url=https%3A%2F%2Ftwitter.com%2FNidhalBaccouri :alt: Twitter URL :target: https://twitter.com/NidhalBaccouri

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:

.. code-block:: python

from b_rabbit import BRabbit

create a parent instance which provide a global rabbitMQ connection

.. code-block:: python

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

now, just one liner to publish a message:

.. code-block:: python

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:

.. code-block:: python

 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

.. code-block:: python

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)

.. code-block:: python

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

Keywords

b_rabbit

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts