Estoy un poco confundido sobre cómo debería ser mi configuración para configurar un intercambio de temas.Intercambio de temas con Apio y RabbitMQ
http://www.rabbitmq.com/tutorials/tutorial-five-python.html
Esto es lo que me gustaría lograr:
Task1 -> send to QueueOne and QueueFirehose
Task2 -> sent to QueueTwo and QueueFirehose
a continuación:
Task1 -> consume from QueueOne
Task2 -> consume from QueueTwo
TaskFirehose -> consume from QueueFirehose
sólo quiero Tarea1 a consumir a partir QueueOne y Task2 a consumir de QueueTwo.
Ese problema ahora es que cuando se ejecutan Task1 y 2, también agotan QueueFirehose, y la tarea TaskFirehose nunca se ejecuta.
¿Hay algún problema con mi configuración o estoy malinterpretando algo?
CELERY_QUEUES = {
"QueueOne": {
"exchange_type": "topic",
"binding_key": "pipeline.one",
},
"QueueTwo": {
"exchange_type": "topic",
"binding_key": "pipeline.two",
},
"QueueFirehose": {
"exchange_type": "topic",
"binding_key": "pipeline.#",
},
}
CELERY_ROUTES = {
"tasks.task1": {
"queue": 'QueueOne',
"routing_key": 'pipeline.one',
},
"tasks.task2": {
"queue": 'QueueTwo',
"routing_key": 'pipeline.two',
},
"tasks.firehose": {
'queue': 'QueueFirehose',
"routing_key": 'pipeline.#',
},
}
Quizás esta sea solo una terminología para aclarar, pero su descripción parece que está combinando tareas y trabajadores. Por ejemplo, diga "Tarea2 enviada a Queue2" y luego diga "Tarea2 para consumir desde Queue2". Las tareas no consumen; son consumidos (por los trabajadores). También dice "La tarea TaskFirehose nunca se ejecuta", pero en su descripción, no se está enviando TaskFirehose a ninguna cola. El concepto básico es: las tareas se envían a las colas; y los trabajadores ejecutan tareas desde las colas que les asignaron. ¡Tareas! = Los trabajadores que las ejecutan. –