Tôi hơi bối rối về cấu hình của tôi sẽ như thế nào để thiết lập trao đổi chủ đề.Trao đổi chủ đề với Cần tây và ThỏMQ
http://www.rabbitmq.com/tutorials/tutorial-five-python.html
Đây là những gì tôi muốn thực hiện:
Task1 -> send to QueueOne and QueueFirehose
Task2 -> sent to QueueTwo and QueueFirehose
thì:
Task1 -> consume from QueueOne
Task2 -> consume from QueueTwo
TaskFirehose -> consume from QueueFirehose
Tôi chỉ muốn task1 để tiêu thụ từ QueueOne và Task2 để tiêu thụ từ QueueTwo.
Vấn đề đó bây giờ là khi Task1 và 2 chạy, chúng cũng thoát khỏi QueueFirehose và nhiệm vụ TaskFirehose không bao giờ thực thi.
Có vấn đề gì với cấu hình của tôi hay tôi hiểu nhầm điều gì đó?
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.#',
},
}
Có thể đây chỉ là thuật ngữ để làm rõ, nhưng mô tả của bạn có vẻ như bạn đang làm nhiệm vụ và công nhân. Ví dụ, bạn nói "Task2 được gửi đến Queue2" rồi sau đó nói "Task2 để tiêu thụ từ Queue2". Nhiệm vụ không tiêu thụ; chúng được tiêu thụ (bởi công nhân). Bạn cũng nói rằng "TaskFirehose tác vụ không bao giờ thực hiện" nhưng trong mô tả của bạn, không có TaskFirehose được gửi đến bất kỳ hàng đợi nào. Khái niệm cơ bản là: nhiệm vụ được gửi đến hàng đợi; và công nhân thực hiện các nhiệm vụ từ hàng đợi mà họ được chỉ định. Công việc! = Công nhân thực hiện chúng. –