AMQP मेरे समझ के साथ कि संदेश केवल निम्न घटक है:क्यों CELERY_ROUTES में "कतार" और "रूटिंग_की" दोनों हैं?
- संदेश के मुख्य भाग
- मार्ग कुंजी
- विनिमय
कतार आदान-प्रदान से जुड़े होते हैं। संदेशों को कतारों का कोई ज्ञान नहीं हो सकता है। वे सिर्फ एक एक्सचेंज पर पोस्ट करते हैं, और फिर एक्सचेंज प्रकार और रूटिंग कुंजी के आधार पर, संदेशों को एक या अधिक कतारों में भेज दिया जाता है।
सेलेरी में, रूटिंग कार्यों का अनुशंसित तरीका CELERY_ROUTES सेटिंग के माध्यम से होता है। दस्तावेज़ों से, CELERY_ROUTES है ...
राउटर की एक सूची, या कतारों को कार्यों को रूट करने के लिए उपयोग किए जाने वाले एक राउटर। http://celery.readthedocs.org/en/latest/configuration.html#message-routing
और यह एक उदाहरण भी शामिल है ...
feed_tasks कतार में एक काम है, तो आप CELERY_ROUTES सेटिंग में एक प्रविष्टि जोड़ सकते हैं मार्ग के लिए:
CELERY_ROUTES = { 'feeds.tasks.import_feed': { 'queue': 'feed_tasks', 'routing_key': 'feed.import', }, }
लेकिन एक मिनट प्रतीक्षा करें - एएमक्यूपी के अनुसार, संदेश केवल रूटिंग कुंजी के साथ आते हैं! वहां "कतार" क्या बिल्ली है?
इसके अलावा, डिफ़ॉल्ट कतार की यह धारणा है। यदि आप एक ऐसा कार्य करते हैं जो CELERY_ROUTES द्वारा पकड़ा नहीं गया है, तो यह वापस CELERY_DEFAULT_QUEUE पर आता है। लेकिन फिर - एएमक्यूपी में, संदेशों को कतारों के बारे में पता नहीं है। क्या इसके बजाय डिफ़ॉल्ट रूटिंग कुंजी नहीं होनी चाहिए?
को समझने के लिए यकीन है कि अधिक: कतार बुला() का दृष्टांत ... एक बंधन और नहीं एक कतार ? –
किसी भी तरह से आप कह सकते हैं कि कोम्बु में कतार वस्तु एक एएमक्यूपी कतार से मेल खाती है जो एक निश्चित रूटिंग कुंजी के साथ एक एक्सचेंज से जुड़ी होती है। –