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.65.tar.gz (20.3 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.65-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hijiki-1.0.65.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hijiki-1.0.65.tar.gz
Algorithm Hash digest
SHA256 a131bce05dbf936d959964402a197989589a5155ad6c0ba0ea68062e34fb2314
MD5 9a40fe4ebc172f6180db30be9159cf04
BLAKE2b-256 580437eb6092ce60c3b55fdc47bff3b0b66934eba1fc2d537671eef0875c5937

See more details on using hashes here.

File details

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

File metadata

  • Download URL: hijiki-1.0.65-py3-none-any.whl
  • Upload date:
  • Size: 19.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hijiki-1.0.65-py3-none-any.whl
Algorithm Hash digest
SHA256 8ad25bf111cf4ad75a76b94218595994352eccb832681c7dbcd6b1002b60b5f0
MD5 9d348188bb8cdd0b264c1a1af37cd8b1
BLAKE2b-256 38976db548d4a402104371153c918a87844381fec19dd306ba89e944dadddc4d

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