RPC брокер сообщений
Project description
RabbitMQ Broker
Не зависящий от фреймворков пакет для общения между микросервисами. Пакет предоставляет интерфейс для работы с брокером сообщений RabbitMQ
и базовый класс цепочки обработчиков.
Пакет реализует паттерн цепочка обязанностей в синхронном и асинхронном виде.
Конфигурация
Переменная окружения | Описание | Значение по умолчанию |
---|---|---|
MICROSERVICE_SETTINGS | Путь к модулю настроек проекта отно- | "settings" |
-сительно корня проекта. (Разделение | ||
через точку: module1.module2.settings) |
Использование
Цепочка обработчиков
Для использования цепочки обязанностей нужно импортировать базовый класс звена и унаследоваться от него. Необходимо установить параметр request_type
. Обязательно должен быть переопределен абстрактный метод BaseChain.get_response_body(self, data)
:
from rmq_broker.chains.base import BaseChain
class LoginChain(BaseChain):
request_type = "login"
def get_response_body(self, data: dict) -> dict:
...
Также, можно унаследоваться от асинхронного варианта реализации:
from rmq_broker.async_chains.base import BaseChain
class LoginChain(BaseChain):
request_type = "login"
async def get_response_body(self, data: dict) -> dict:
...
Метод должен содержать логику обработки запроса и вызывать родительский метод
BaseChain.form_response(data, body, code, message)
class LoginChain(BaseChain):
request_type = "login"
async def get_response_body(self, data):
# Обработка запроса
...
return super().form_response(data, response, status.HTTP_200_OK, "OK")
data
: Изначальное сообщение.
body
: Обработанное тело запроса.
code
: HTTP код ответа.
message
: Сообщение к ответу.
RPC брокер
Запуск прослушки и автоматического ответа на сообщения.
В файле consumer.py
:
from app.chains import your_chain
from rmq_broker.queues.rabbitmq import AsyncRabbitMessageQueue
async def broker_runner():
async with AsyncRabbitMessageQueue() as provider:
await provider.register_tasks("rpc_queue_name", your_chain.handle)
await provider.consume()
asyncio.run(broker_runner())
Далее:
python3 consumer.py
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
Built Distribution
Hashes for rabbitmq_broker-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37b37ad66d7344e1dfc14b4c64e505e447bbb61bb9295ad813047f95418ebb34 |
|
MD5 | b84cd24434ad8cb06d1f1954971df9e4 |
|
BLAKE2b-256 | f9aa0c86aaa7fa0196d573af3ab4ffc29edb0c834f587e5232896741218c7b87 |