Я пытаюсь использовать встроенную поддержку сельдерея для широковещательной маршрутизации, используя Broadcast и используя rabbitmq в качестве брокера.Я смог успешно опубликовать и получить сообщение, используя прямой обмен по умолчанию, а сейчас я пытаюсь использовать разветвленный обмен, предоставляемый rabbitmq.Для этого кажется, что у сельдерея есть встроенная поддержка с использованием класса Broadcast.
Мой конфет сельдерея выглядит так:
app.conf.task_queues = (Broadcast('broadcast_tasks'),)
app.conf.task_routes = {
'tasks.tasks.sync_channels': {
'queue': 'broadcast_tasks',
'exchange': 'broadcast_tasks'
}
}
И вот как я определил свою задачу в приложении / задачах/tasks.py
@app.task(name='sync_channels')
def sync_channels(data):
logger.debug('Received here')
pass
Вот как я отправляю сообщение rabbitmq с помощью сельдерея:
from app.tasks.tasks import sync_channels
sync_channels.delay([])
Когда я открываю пользовательский интерфейс управления rabbitmq, я вижу, что обмен фанатамисоздается с именем "broadcast_tasks", но когда я пытаюсь отправить сообщение в задачу sync_channels, он автоматически создает обмен по умолчанию (прямой) и очередь по умолчанию, привязанную к обмену по умолчанию, и все мои будущие сообщения в задачу sync_channels передаются вобмен по умолчанию.Кажется, почему-то я не могу настроить функцию Broadcast, которую предоставляет сельдерей.
Ниже приведены некоторые скриншоты, которые могут помочь вам понять проблему:
Мне также нужно немного понять, как работает трансляция сельдерея.Кроме того, вместо использования функции широковещания я попытался создать обмен разветвления, но я пытался привязать очередь к этому обмену, а затем опубликовать сообщение.Любая помощь или любой пример того, как это сделать, будет полезен для меня.
Заранее спасибо