Basics¶
Разделение зависимостей¶
Propan поддерживает различные брокеры сообщений используя для этого специальные классы
from propan import RedisBroker
from propan import RabbitBroker
from propan import KafkaBroker
from propan import SQSBroker
from propan import NatsBroker
Будьте внимательные! Разные брокеры требуют разных зависимостей. Если вы не установили эти зависимости, импортируемый брокер будет иметь значение None.
Для установки Propan с необходимыми для вашего брокера зависимостями, выберите один из вариантов установки
pip install "propan[async-redis]"
pip install "propan[async-rabbit]"
pip install "propan[async-kafka]"
pip install "propan[async-sqs]"
pip install "propan[async-nats]"
Инициализации брокера¶
Данные для подключения Propan Broker к вашему брокеру сообщений могут быть переданы 2мя способами:
-
В конструкторе брокера
from propan import RedisBroker broker = RedisBroker("redis://localhost:6379/") -
В методе
connectfrom propan import RedisBroker broker = RedisBroker() ... await broker.connect("redis://localhost:6379/")
-
В конструкторе брокера
from propan import RabbitBroker broker = RabbitBroker("amqp://guest:guest@localhost:5672/") -
В методе
connectfrom propan import RabbitBroker broker = RabbitBroker() ... await broker.connect("amqp://guest:guest@localhost:5672/")
-
В конструкторе брокера
from propan import KafkaBroker broker = KafkaBroker("localhost:9092") -
В методе
connectfrom propan import KafkaBroker broker = KafkaBroker() ... await broker.connect("localhost:9092")
-
В конструкторе брокера
from propan import SQSBroker broker = SQSBroker("http://localhost:9324") -
В методе
connectfrom propan import SQSBroker broker = SQSBroker() ... await broker.connect("http://localhost:9324")
-
В конструкторе брокера
from propan import NatsBroker broker = NatsBroker("nats://localhost:4222") -
В методе
connectfrom propan import NatsBroker broker = NatsBroker() ... await broker.connect("nats://localhost:4222")
В простейшем случае вам хватит первого способа передачи данных для подключения - через конструктор.
Однако, в более сложных сценариях: например, при конфигурировании проекта через переменные окружения вам может понадобиться и второй вариант. Полный пример разобран здесь
Note
Параметры, переданные в connect имеют приоритет над параметрами, переданными в конструктор. Будьте с этим аккуратны.
Кроме этого, повторный вызов connect не приведет ни к какому эффекту. Поэтому вы можете не опосаться, что вызов broker.start()
(используется внутри PropanApp для запуска брокера) вызовет какие-либо ошибки.