के साथ टॉपिक एक्सचेंज मैं थोड़ा उलझन में हूं कि मेरी कॉन्फ़िगरेशन एक विषय विनिमय स्थापित करने के लिए कैसा दिखना चाहिए।सेलरी और खरगोश एमक्यू
Task1 -> send to QueueOne and QueueFirehose
Task2 -> sent to QueueTwo and QueueFirehose
तो:
http://www.rabbitmq.com/tutorials/tutorial-five-python.html
यह मैं हासिल करना चाहते हैं क्या है
Task1 -> consume from QueueOne
Task2 -> consume from QueueTwo
TaskFirehose -> consume from QueueFirehose
मैं केवल Task1 QueueTwo से उपभोग करने के लिए QueueOne और Task2 से उपभोग करने के लिए चाहते हैं।
अब समस्या यह है कि जब कार्य 1 और 2 रन, तो वे क्यूईफ़ीरहाउस भी निकाल देते हैं, और टास्कफायरहोज़ कार्य कभी निष्पादित नहीं होता है।
क्या मेरी कॉन्फ़िगरेशन में कुछ गड़बड़ है, या क्या मैं कुछ गलत समझ रहा हूं?
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.#',
},
}
शायद यह स्पष्ट करने के लिए शब्दावली है, लेकिन आपका विवरण लगता है जैसे आप कार्य और श्रमिकों को भंग कर रहे हैं। उदाहरण के लिए, आप कहते हैं "टास्क 2 क्यूई 2 को भेजा गया" फिर बाद में "टास्क 2 क्यूई 2 से उपभोग करने के लिए" कहता है। कार्य उपभोग नहीं करते हैं; वे उपभोग कर रहे हैं (श्रमिकों द्वारा)। आप यह भी कहते हैं कि "टास्कफायरहोज़ कार्य कभी निष्पादित नहीं होता" लेकिन आपके विवरण में, किसी भी कतार में कोई कार्यफाइल नहीं भेजा जा रहा है। मूल अवधारणा है: कार्य कतारों को भेजे जाते हैं; और श्रमिकों को कतारों से कार्य निष्पादित किया जाता है जिन्हें वे सौंपा जाता है। कार्य! = मजदूर जो उन्हें निष्पादित करते हैं। –