2010-04-07 17 views
8

मैं वर्तमान में संदेश कतार प्रणाली का मूल्यांकन कर रहा हूं और रैबिटएमक एक अच्छे उम्मीदवार की तरह दिखता है, इसलिए मैं इसमें थोड़ा और खोद रहा हूं।क्या RabbitMq एक्सचेंज से कतार में राउंड-रॉबिन करता है

थोड़ा संदर्भ देने के लिए मुझे कुछ कतारों में संदेश प्रकाशित करने के लिए एक एक्सचेंज लोड की तरह कुछ दिखाना है। मैं संदेशों को दोहराना नहीं चाहता, इसलिए एक fanout विनिमय एक विकल्प नहीं है।

इसके अलावा, मैं राउंड-रॉबिन डब्ल्यू/उपभोक्ताओं को संभालने वाली एक कतार बनाम एक कतार बनाने के बारे में सोच रहा हूं, यह है कि मैं कतार स्तर पर विफल होने का हमारा एकल बिंदु नहीं चाहता हूं।

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

मैं एक्सचेंज इकाई पक्ष से अधिक सक्रिय सक्रिय तरीके की तलाश में था, यह तय करेगा कि प्रत्येक कतार आकार या उस प्रकृति के आधार पर अगला संदेश कहां भेजना है।

मैंने एलिस और उपलब्ध रीस्टफुल एपीआई के बारे में पढ़ा लेकिन यह तेजी से रूटिंग निर्णयों को लागू करने के लिए एक भारी कर्तव्य समाधान लगता है।

कोई भी जानता है कि एक्सचेंज के बीच राउंड-रॉबिन कतार कब संभव है w/RabbitMQ? धन्यवाद।

+0

जैसे ही हमने उत्पादन में एक कतार का परीक्षण किया, हम एक पैमाने की समस्या में फंस गए।एक कतार एकल धागा है। यह हमारे भार के साथ नहीं रह सकता है। हम एक राउंड रॉबिन वितरण –

उत्तर

4

एक्सचेंज आम तौर पर एएमक्यूपी मॉडल में स्टेटलेस हैं, हालांकि राज्यव्यापी आदान-प्रदान में हाल ही में कुछ प्रयोग किए गए हैं कि खरगोशएमक्यू प्लगइन के प्रबंधन के लिए और नए प्रयोगात्मक विनिमय प्रकार प्रदान करने के लिए दोनों प्रणालियां हैं।

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

मैं सुझाव देता हूं कि खरगोश-चर्चा मेलिंग सूची पर फिर से अपना प्रश्न पूछें, जहां अधिक लोग सुझाव देने में सक्षम होंगे, और जहां जनसंख्या के लिए चर्चा संग्रहीत की जा सकती है।

+0

सहायता के लिए धन्यवाद में काम करने के लिए सर्वोत्तम प्रथाओं की तलाश में हैं। यह अभी के लिए एक अच्छा काम है क्योंकि मैं केवल मूल्यांकन चरण में हूं। – Lancelot

1

दृष्टिकोण पर टोनी के साथ सहमत हैं।

यहाँ एक है कि आप अपने खुद के रोलिंग के बजाय इस्तेमाल कर सकते हैं RabbitMQ, Redis की 'खिचड़ी-' है - http://xing.github.com/beetle/

0

एक ही रास्ता में बनाया आप कतारों के लिए एक फार्म विनिमय साझा करने का एक रूप से कर सकते हैं, लेकिन वास्तव में नहीं राउंड रॉबिन, लगातार हैशिंग है। rabbitmq_consistent_hash_exchange

कैसे भी https://medium.com/@eranda/rabbitmq-x-consistent-hashing-with-wso2-esb-27479b8d1d21

कागज समझाने के लिए, यह एक सर्कल पर एक भारित वितरण पर कतारों रखता है और फिर यादृच्छिक रूटिंग कुंजी भेज कर यह सबसे करीब कतार में भेज देंगे। http://www8.org/w8-papers/2a-webserver/caching/paper2.html

संबंधित मुद्दे