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/")
-
В методе
connect
from propan import RedisBroker broker = RedisBroker() ... await broker.connect("redis://localhost:6379/")
-
В конструкторе брокера
from propan import RabbitBroker broker = RabbitBroker("amqp://guest:guest@localhost:5672/")
-
В методе
connect
from propan import RabbitBroker broker = RabbitBroker() ... await broker.connect("amqp://guest:guest@localhost:5672/")
-
В конструкторе брокера
from propan import KafkaBroker broker = KafkaBroker("localhost:9092")
-
В методе
connect
from propan import KafkaBroker broker = KafkaBroker() ... await broker.connect("localhost:9092")
-
В конструкторе брокера
from propan import SQSBroker broker = SQSBroker("http://localhost:9324")
-
В методе
connect
from propan import SQSBroker broker = SQSBroker() ... await broker.connect("http://localhost:9324")
-
В конструкторе брокера
from propan import NatsBroker broker = NatsBroker("nats://localhost:4222")
-
В методе
connect
from propan import NatsBroker broker = NatsBroker() ... await broker.connect("nats://localhost:4222")
В простейшем случае вам хватит первого способа передачи данных для подключения - через конструктор.
Однако, в более сложных сценариях: например, при конфигурировании проекта через переменные окружения вам может понадобиться и второй вариант. Полный пример разобран здесь
Note
Параметры, переданные в connect
имеют приоритет над параметрами, переданными в конструктор. Будьте с этим аккуратны.
Кроме этого, повторный вызов connect
не приведет ни к какому эффекту. Поэтому вы можете не опосаться, что вызов broker.start()
(используется внутри PropanApp
для запуска брокера) вызовет какие-либо ошибки.