2013-02-26 211 views
9

पर प्रत्यक्ष विनिमय का उपयोग कब करें, जहां तक ​​मैं कह सकता हूं, प्रत्यक्ष विनिमय के लिए कोई उचित उपयोगकर्ता केस नहीं है, जैसा कि आप इसके साथ कुछ भी कर सकते हैं, आप केवल एक अधिक प्रशंसनीय विनिमय के साथ कर सकते हैं।प्रशंसक विनिमय

अधिक विशेष रूप से कार्रवाई में RabbitMQ पढ़ने में लेखकों बहुत पैमाने पर उपयोग के मामले ऐसा ही कुछ हो जाता है का उल्लेख - "मान लीजिए जब कोई उपयोगकर्ता एक तस्वीर आप एक थंबनेल उत्पन्न करने के लिए की जरूरत है अपलोड करता है लेकिन फिर बाद में विपणन भी पुरस्कार के लिए आपको बताता है। एक फोटो अपलोड करने के लिए अंक। RabbitMQ के साथ आपको बस एक और कतार बनाना है और निर्माता पक्ष पर कोई काम नहीं करना है! "

लेकिन यह केवल सच है यदि आपके पास निर्माता पक्ष पर एक प्रशंसक विनिमय बनाने के लिए दूरदर्शिता है। मेरी समझ के लिए एक प्रत्यक्ष विनिमय यह पूरा नहीं कर सकता है और केवल तभी उपयुक्त होता है जब आप वास्तव में एक्सचेंज और कतार के बीच कसकर युग्मन चाहते हैं, (जो आप नहीं करते हैं, क्योंकि यह संदेश प्रणाली का बिंदु है।)

क्या यह सही है या वहां है एक वास्तविक उपयोग मामले?

उत्तर

0

क्या आपका मतलब एक प्रशंसक विनिमय या विषय विनिमय है? एक प्रशंसक विनिमय प्रत्यक्ष विनिमय से बहुत अलग है। मुझे लगता है कि एक्सचेंज में फोटो भेजना एक रूटिंग कुंजी के साथ भेजा जाता है जो निर्दिष्ट करता है कि एक तस्वीर है। इस मामले में आपके पास एक उपभोक्ता है जो थंबनेल उत्पन्न करता है और जब आप एक नया उपभोक्ता जोड़ना चाहते हैं तो आप इसे जोड़ सकते हैं और एक ही संदेश प्राप्त कर सकते हैं लेकिन इसके साथ कुछ अलग कर सकते हैं, यानी पुरस्कार अंक।

उपयोग केस जारी है। मुझे लगता है कि मुद्दा यह है कि एक्सचेंज मूल रूप से प्रत्यक्ष विनिमय के रूप में बनाया जाता है।

0

इस उत्तर previousone गूँज और अगर आप इस page को देखें, मेरा मानना ​​है कि आप पाएंगे कि एक विशेष उपयोग के मामले में वर्णित है:

प्रत्यक्ष एक्सचेंजों अक्सर श्रमिकों (उदाहरणों कई के बीच कार्य वितरित करने के लिए उपयोग किया जाता है एक ही आवेदन के) एक गोल रॉबिन तरीके से।

+0

दस्तावेज़ीकरण में यह वाक्य उलझन में है। वास्तव में, यदि आप एक ही रूटिंग कुंजी के साथ एक ही रूटिंग कुंजी के साथ कई कतार बांधते हैं, तो रूटिंग कुंजी से मेल खाने पर वे सभी को संदेश प्राप्त होगा। यह [ट्यूटोरियल 4] में बेहतर समझाया गया है (https://www.rabbitmq.com/tutorials/tutorial-four-python.html)। –

5

प्रशंसक विनिमय की तुलना में, प्रत्यक्ष विनिमय संदेश की रूटिंग कुंजी के आधार पर कुछ फ़िल्टरिंग की अनुमति देता है यह निर्धारित करने के लिए कि कौन सी कतार संदेश प्राप्त करती है। एक प्रशंसक विनिमय के साथ, ऐसी कोई फ़िल्टरिंग नहीं है और सभी संदेश सभी बाध्य कतारों पर जाते हैं।

तो यदि आपके पास समान रूटिंग कतार के साथ कई कतारों के साथ प्रत्यक्ष विनिमय है, और सभी संदेशों में यह कुंजी है, तो आपके पास fanout exchange के समान व्यवहार है। tutorial 4 on the RabbitMQ website में यह बेहतर समझाया गया है।

छवि अपलोड उपयोग मामले में, आप उपयोग कर सकते हैं:

  • दो कतारों (थंबनेल कार्यकर्ता के लिए एक, स्कोर गणना कार्यकर्ता के लिए एक) के साथ एक फैनआउट विनिमय। रूटिंग कुंजी को नजरअंदाज कर दिया जाता है।

    fanout-exchange 
    |--> queue --> thumbnail-worker 
    `--> queue --> score-worker 
    
  • दो पंक्तियों के साथ एक प्रत्यक्ष विनिमय। उदाहरण के लिए कतार image-processing कुंजी से बंधी हुई हैं, और इस कुंजी वाले संदेश दोनों कतारों के लिए कतारबद्ध होंगे।

    direct-exchange 
    |--["image-processing"]--> queue --> thumbnail-worker 
    `--["image-processing"]--> queue --> score-worker 
    

    बेशक, इस स्थिति में, यदि संदेश के रूटिंग कुंजी बाइंडिंग कुंजी से मेल नहीं खाता, कतारों में से कोई भी संदेश प्राप्त होगा।

आप दो श्रमिकों को एक ही कतार पर नहीं डाल सकते हैं, क्योंकि संदेशों को उनके बीच संतुलित लोड किया जाएगा: एक कार्यकर्ता संदेश के आधे हिस्से को देखेगा।