Skip to main content

No project description provided

Project description

Documentation:

https://github.com/AmirRedHat/PhiliaRabbitMQ

Description

This project made for philia. In this project we package the rabbitmq utils.

  • producer
  • consumer
  • connection pool

Consumer

The consumer implemented in two version (sync and async). Both of them accept an callback function as argument and received data from producer will pass to callback

Sync Version :

def consumer_callback(ch, method, properties, body):
    ...
    # body is received data from producer

from philiarabbit.consumer import PhiliaRabbitConsumer
from pika.exchange_type import ExchangeType
consumer = PhiliaRabbitConsumer(
    rabbit_url="",
    queue_name="",
    exchange_name="",
    routing_keys=[],
    exchange_type=ExchangeType.topic  # TOPIC or DIRECT
)
consumer.run(consumer_callback)

Async Version :

async def consumer_callback(body):
    ...
    # body is received data from producer

from philiarabbit.consumer import AsyncPhiliaRabbitConsumer
import aio_pika
import asyncio
consumer = AsyncPhiliaRabbitConsumer(
    rabbit_url="",
    queue_name="",
    exchange_name="",
    routing_keys=[],
    exchange_type=aio_pika.ExchangeType.TOPIC  # TOPIC or DIRECT
)
asyncio.run(consumer.run(consumer_callback))

Producer

The producer is implemented in two version (sync and async). just define exchange_name and routing_key then publish the message. you can also manage the connections by passing connection pool object.

Connection Pool

The connection pool is implemented in two version (sync and async). This class will manage your rabbitmq connections and keep them in queue for heavy-call cases

Example :

from philiarabbit.connection_pool import PhiliaRabbitConnectionPool
pool = PhiliaRabbitConnectionPool(
    rabbit_url="",
    max_size=2,
    logger=None  # you can pass a logger instance
)
connection, channel = pool.get_connection_with_channel()
# you can use the connection and channel in your codebase

Example of connection pool with producer :

from philiarabbit.connection_pool import PhiliaRabbitConnectionPool
pool = PhiliaRabbitConnectionPool(
    rabbit_url="",
    max_size=2,
    logger=None  # you can pass a logger instance
)

from philiarabbit.producer import PhiliaRabbitProducer
producer = PhiliaRabbitProducer(
        rabbit_url="",
        routing_key="",
        exchange_name="",
    )
producer.publish(data=bytes)

Test

The integration tests wrote in /tests/ directory.

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

philiarabbit-0.1.2.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

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

philiarabbit-0.1.2-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: philiarabbit-0.1.2.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.0 Linux/6.8.0-58-generic

File hashes

Hashes for philiarabbit-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d83956a4583d1c2b6c3a58ceaa90fd161dd7037811bc8849615bbc333f25d2fa
MD5 99fc3ede8dd3d2cd2a08d8a818e919cc
BLAKE2b-256 79ad99845da8d8273223005cfefac47655808e70cdb230b25c5a221851ecc5ae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: philiarabbit-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.0 Linux/6.8.0-58-generic

File hashes

Hashes for philiarabbit-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 79325b36f45acbfe5a99cdd587a231515be0ffec7b6b1d313822ec6d23b39334
MD5 8238a70fd914c41b7a66287e4189424b
BLAKE2b-256 afe38e23be1338483ed5634a7e80d8b2016dc3c531935b0ce39b4ea63e8e248e

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