Set up your rabbit instance using a declarative yaml file.
Project description
RoboRabbit
Main features
- An extremely simple worker class. (!!!!)
- Set up your rabbit queues, exchanges, and bindings using a declarative yaml configuration file.
- Command line interface for bootstrapping rabbit from your roborabbit yaml config file.
Worker
The simplest worker possible. Connection information is in the roborabbit.yaml
file. The method run()
takes an dictionary with a key/value pair:
- key:
queue
- string, the name of the queue to listen to - value:
handler
- function, the callback function messages will be sent to
Basic Example
from roborabbit.roborabbit import RoboRabbit
from pathlib import Path
config_path = Path('roborabbit.yaml')
robo = RoboRabbit(config_path)
async def queue_handler(msg):
print(msg) # your logic here
await robo.run({'queue_1', queue_handler})
Explicit connection example
If you want control over the configuration, you can pass in the roborabbit connection object.
from roborabbit.connection import Connection
from roborabbit.roborabbit import RoboRabbit
from pathlib import Path
config_path = Path('roborabbit.yaml')
connection = Connection(
host='not.localhost.com',
username='bob',
password='pas123',
port=4499,
virtualhost='/')
robo = RoboRabbit(config_path, connection)
async def queue_handler(msg):
print(msg) # your logic here
async def work():
await robo.run({'queue_1', queue_handler})
Command
roborabbit --config path/to/roborabbit.yaml
info
Usage: roborabbit [OPTIONS]
import yaml config file and creates a dictionary from it
Options:
--config TEXT Path to rabbit config yaml file
--host TEXT RabbitMQ host
--port TEXT RabbitMQ port
--virtualhost TEXT RabbitMQ virtualhost
--username TEXT RabbitMQ username
--password TEXT RabbitMQ password
--help Show this message and exit.
Override environment variables
RABBIT_USER=guest
RABBIT_PASS=guest
RABBIT_HOST=localhost
RABBIT_PORT=5672
RABBIT_VHOST=/
Example yaml files
Simple declare queue, exchange, and bind
host: localhost
username: guest
password: guest
virtualhost: /
port: 5672
exchanges:
- name: exchange_1
type: topic
queues:
- name: queue_1
bindings:
- from:
type: exchange
name: exchange_1
to:
type: queue
name: queue_1
routing_keys:
- records.created
Header exchange declaration and binding
host: localhost
username: guest
password: guest
virtualhost: /
port: 5672
exchanges:
- name: exchange_2
type: headers
queues:
- name: queue_2
bindings:
- from:
type: exchange
name: exchange_2
to:
type: queue
name: queue_1
bind_options:
- x-match: all
hw-action: header-value
All Values Available
# Connection info
host: localhost
username: guest
password: guest
virtualhost: /
port: 5672
# Exchange declarations
exchanges:
- name: string
type: topic|headers|direct|fanout # topic is default
durable: false # default
auto_delete: true # default
# queue declarations
queues:
- name: string
type: quorum # Not required. This is the default and currently only option available (For us, all our queues are quorum. We manually create the queue that needs other requirements). MR welcome
# create_dlq: true # TODO: This will be the default. Set to false if you do not want a dead letter queue/exchange for this queue
durable: true # default
robust: true # default
auto_delete: false # default
exclusive: false # default
auto_delete_delay: 0 # default
arguments: # rabbit specific key/value pairs
key_1: value_1
key_2: value_2
# bindings
bindings:
- from:
type: exchange
name: string
to:
type: exchange|queue
name: string
routing_keys:
- record.created # list of string, required, unless bind_options is defined
bind_options: # list of `x-match` and `header-key`, required if binding to a header exchange
- x-match: all|any # header type of matcher
header-key: string # header topic to be matched
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
roborabbit-0.2.9.tar.gz
(10.5 kB
view details)
Built Distribution
File details
Details for the file roborabbit-0.2.9.tar.gz
.
File metadata
- Download URL: roborabbit-0.2.9.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.10 CPython/3.9.7 Darwin/20.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b3811b68f8392beca1472bf20ac722c521ba83a78360438bab04bb5f623969a |
|
MD5 | 670c1389b175cd963650eb2d551935fe |
|
BLAKE2b-256 | f1b50ddd4783872dec49d078e74bb778a75311ca5c32e2671e6f03bcd7d0d770 |
File details
Details for the file roborabbit-0.2.9-py3-none-any.whl
.
File metadata
- Download URL: roborabbit-0.2.9-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.10 CPython/3.9.7 Darwin/20.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2354ef839bc4e35dfc0f738d351bfc88d691cf807b8ab9b7c0b1f7b04da23c65 |
|
MD5 | 2db7a576f188506045d878b187bbee14 |
|
BLAKE2b-256 | 548efcd2056b284d2abdddb22f6ad7f9308429de2250bf90f1bf796a5695dce6 |