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

Uploaded Python 3

File details

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

File metadata

  • Download URL: hijiki-1.0.67.tar.gz
  • Upload date:
  • Size: 20.5 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.67.tar.gz
Algorithm Hash digest
SHA256 7fcd45070dbb02aed11ede29e3bfcde11f55dba866e3af8791f3d07537df7681
MD5 11297e474721366600c98245b542225c
BLAKE2b-256 e330d026232f448b300c7addd79a4719477b5963808189cbacdfbf5a3dc91018

See more details on using hashes here.

File details

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

File metadata

  • Download URL: hijiki-1.0.67-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.67-py3-none-any.whl
Algorithm Hash digest
SHA256 c325907ceac3cb7e8c30c9a0f6333c1ffc7aec1a9404249823ec8c7fe7614b8b
MD5 d102bc501638882e9535279224ae885c
BLAKE2b-256 efb3bad073a2a68b84cae26ea423a1512dd27509d55aa7ca28e0dc92d986679c

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