Skip to main content

Python RabbitMQ client for MassTransit Communication

Project description

Description

Python library to exchange messages between MassTransit RabbitMQ Client and Python application.

Installation

Run the following to install:

pip install masstransitpython

Usage

Simple receiver/sender model was implemented to show basic package usage.

Configuration

Default client configuration can be implemented as follows:

from pika import PlainCredentials
from RabbitMQConfiguration import RabbitMQConfiguration

RABBITMQ_USERNAME = 'guest'
RABBITMQ_PASSWORD = 'guest'
RABBITMQ_HOST = 'localhost'
RABBITMQ_PORT = 5672
RABBITMQ_VIRTUAL_HOST = '/'

credentials = PlainCredentials(RABBITMQ_USERNAME, RABBITMQ_PASSWORD)
conf = RabbitMQConfiguration(credentials, 
                             queue='PythonServiceQueue', 
                             host=RABBITMQ_HOST, 
                             port=RABBITMQ_PORT,
                             virtual_host=RABBITMQ_VIRTUAL_HOST)

Receiver

Receiver must have an appropriately defined exchange name: [SOLUTION_NAME:DIRECTORY_NAME:MESSAGE_NAME]

from masstransitpython import RabbitMQReceiver
from json import loads

def handler(ch, method, properties, body):
    msg = loads(body.decode())
    print("Received message: %s" % msg["message"])

# define receiver
receiver = RabbitMQReceiver(conf, 'MassTransitService.Messages:SampleMessage')
receiver.add_on_message_callback(handler)
receiver.start_consuming()

Sender

from masstransitpython import RabbitMQSender
from json import loads

def send_message(body):
    '''
    :param body: Message received from MassTransit client
    :return: None
    '''
    with RabbitMQSender(conf) as sender:
        sender.set_exchange('MassTransitService.Messages:SampleMessage')

        encoded_msg = MessageEncoder().encode(SampleMessage("Hello World!"))
        response = sender.create_masstransit_response(loads(encoded_msg), body)
        sender.publish(message=response)

Message

from json import JSONEncoder


class SampleMessage:
    def __init__(self, name):
        self.name = name


class MessageEncoder(JSONEncoder):
    def default(self, o):
        return o.__dict__

Other

Full example avaliable in https://github.com/byQ96/MassTransitPython/example

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

masstransitpython-byQ96-0.0.1.tar.gz (3.3 kB view hashes)

Uploaded Source

Built Distribution

masstransitpython_byQ96-0.0.1-py3-none-any.whl (16.9 kB view hashes)

Uploaded Python 3

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