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.2.0.tar.gz (4.7 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.2.0-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: philiarabbit-0.2.0.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.14.0-29-generic

File hashes

Hashes for philiarabbit-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6be6a11f9c325dfcf6a28927dd97375e4115d4f317b1cad7f48067d271648a79
MD5 8f03ebbc70eeeed8882dfd9b3148e5fb
BLAKE2b-256 b9176779f3a6db539b4fabe8c2f18b1cd208e437dfe34dc85eb27f5007438cc8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: philiarabbit-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.14.0-29-generic

File hashes

Hashes for philiarabbit-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e0ae5ee835bdc8a624b561b8f8c7a66d233c375c9f2c61e42b2b4189fb14ea73
MD5 7bed351d9071e3bd9ed371b0265725f7
BLAKE2b-256 6cae84ef47cc4d46f14e0b78f1a2a524006c64b22fa6b26396e603aec4602ffa

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