amenezes/rabbit-client

View on GitHub
docs/overview.md

Summary

Maintainability
Test Coverage
# Overview

**rabbit-client** has full support to use with async python applications following some best practices to delivery features like:  

- connection and reconnection management with broker;  
- automatic channel configuration;  
- automatic [Dead Letter Exchange](https://www.rabbitmq.com/dlx.html) configuration and use;  
- concurrent task execution powered by asyncio `[optional]`;
- [publisher confirms](https://www.rabbitmq.com/confirms.html#publisher-confirms) `[optional]`;
- automatic qos configuration;
- different strategies to delay error events.

## Setup

The main values expected to configure `rabbit-client` can be set via environment variables.

### Default values

```.env title="Default values for environment variables"
# publisher - send_event method
PUBLISH_EXCHANGE_NAME=default.in.exchange
PUBLISH_ROUTING_KEY=#

# subscriber
SUBSCRIBE_EXCHANGE_NAME=default.in.exchange
SUBSCRIBE_EXCHANGE_TYPE=topic
SUBSCRIBE_TOPIC=#
SUBSCRIBE_QUEUE_NAME=default.subscribe.queue

# dlx
DLX_EXCHANGE_NAME=DLX
DLX_TYPE=direct

DLQ_EXCHANGE_NAME=dlqReRouter.default.in.exchange
DLQ_EXCHANGE_TYPE=default.subscribe.queue

# dlx strategies
## expo
EXPO_DELAY=300000
EXPO_BASE=2
EXPO_FACTOR=1
EXPO_MAX_DELAY=

## fibo
FIBO_DELAY=300000 # 5 minutes
FIBO_MAX_DELAY=86400000 # 1 day

## constant
CONSTANT_DELAY=300000 # 5 minutes
```