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 Distributions
Built Distribution
Hashes for rabbitmq_broker-1.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f51e0746ad12bcea380f8bf2f815efb94e82647dc1cf5d5b9e764d9b31714db |
|
MD5 | db90fc272318fbe51cdb7a7ba37bacea |
|
BLAKE2b-256 | 4692b9e5b62a872bbe69ca8e03b12a351a90c0d859f6527badb79366a5ceff5b |