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.62.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.62-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hijiki-1.0.62.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.62.tar.gz
Algorithm Hash digest
SHA256 254edc4d95c06f79e914285a747d7d2bc11b6f106d4eff197f3b29236c4c2154
MD5 e4dcce1165ab81a5bebea17c3d970e28
BLAKE2b-256 b299499146bd4f05025f08e3d6fe1bccbfceb04fbd1737859678f8ac88e2297f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: hijiki-1.0.62-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.62-py3-none-any.whl
Algorithm Hash digest
SHA256 a5e2a016b550e41f858b10cb9f8e078f6580170f9d61081636cdaa91918d968d
MD5 f927c17df0708f03510bde4bf416b45d
BLAKE2b-256 e0065c5a8d2e51b1b51c1b4a5a5f38ee3b52a3dff1ab0d62ba827b75dadf7496

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