Skip to main content

Python Rabbit wrapper library to simplify to use Exchanges and Queues with decorators

Project description

Hijiki

Python Rabbit wrapper library to simplify to use Exchanges and Queues with decorators

Configurations

Hijiki uses environment variables to configure connection with BROKER.

COMMON

  • BROKER_PWD
  • BROKER_USERNAME

For single server

  • BROKER_PORT
  • BROKER_SERVER

For cluster server

  • BROKER_CLUSTER_SERVER

if BROKER_CLUSTER_SERVER is present the priority is generate URI using this list of servers, and not use the sever for single server. To user multiples server from cluster is necessary this environment variable has a list of server with port separates with comma.

Ex:

serverA:5672,serverB:5673

generating for uri connection string the value above

amqp://usr:password@server:5672;amqp://usr:password@serverB:5672;

The user and password is the same for all servers.

If server is not present, even BROKER_CLUSTER_SERVER, the connection url will be a default, and to others configs will be changed for "teste".

How to use

Publisher

The example demonstrate how to publish a simple message to topic "teste1_event" with a json message:

pub = Publisher("localhost", "rabbitmq", "rabbitmq", 5672, heartbeat=30)
pub.publish_message('teste1_event', '{"value": "Esta é a mensagem"}')

Consumer

Consumer uses a configuration to define QUEUES and Exchanges and the consumer is a decorator for the queue.

from hijiki.broker.hijiki_rabbit import HijikiQueueExchange, HijikiRabbit

qs = [HijikiQueueExchange('teste1', 'teste1_event'), HijikiQueueExchange('teste2', 'teste2_event')]
gr = HijikiRabbit().with_queues_exchange(qs) \
    .with_username("rabbitmq") \
    .with_password("rabbitmq") \
    .with_host("localhost") \
    .with_port(5672) \
    .with_heartbeat_interval(30)\
    .build()

class MyConsumer():
    @gr.task(queue_name='teste1')
    def my_consumer(data):
        print(f"consumer 1 executed with data : {data}")

    @gr.task(queue_name='teste2')
    def my_consumer2(data):
        print(f"consumer 2  executed with data : {data}")

if __name__ == '__main__':
    MyConsumer()
    gr.run()

Properties of builder from HijikiRabbit

with_username

Set username of Rabbit Connection

with_password

Set password of Rabbit Connection

with_host

Set host of rabbit when use single node server

with_port

SEt port of rabbit when use single node server

with_cluster_hosts

Set a list of rabbit hosts:port when cluestered server. Example: server-1:5672,server-1:5672,server-1:5672

with_heartbeat_interval

Define heartbeat interval in seconds

with_auto_ack

Define Auto_ack to publish message with autoack

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

hijiki-1.0.63.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

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

hijiki-1.0.63-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file hijiki-1.0.63.tar.gz.

File metadata

  • Download URL: hijiki-1.0.63.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for hijiki-1.0.63.tar.gz
Algorithm Hash digest
SHA256 eeb5fd0f35f4c88e4c13e966c9f840d01eab9ecb4d3ff7eff29c7715d2ecbcf4
MD5 469864e1c878b22aaf5665520f5c1821
BLAKE2b-256 61efd1fdc18b6221ad66c379d2b43806ea20c2707de2932cd7e9b79cb928cdf0

See more details on using hashes here.

File details

Details for the file hijiki-1.0.63-py3-none-any.whl.

File metadata

  • Download URL: hijiki-1.0.63-py3-none-any.whl
  • Upload date:
  • Size: 19.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for hijiki-1.0.63-py3-none-any.whl
Algorithm Hash digest
SHA256 6574216b8a55716c27bfe17f0d46107c658738dfc970a5aeb2ba8a9ba71f21a2
MD5 ace8ecf906e20b3686dfeb11fb8701ba
BLAKE2b-256 f2147970527f67ac5a911dfe8c8de9a1cb77ebdb30bb7d2117c66ef76374af7c

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