2014-10-23 4 views
7

खरगोश एमक्यू के साथ, क्या एक कतार से संदेशों को "धक्का" देने का कोई तरीका है उपभोक्ता को उपभोक्ता "मतदान और खींचें" संदेश कतार से होने के विपरीत?क्या खरगोश एमक्यू कतार से संदेशों को "उपभोक्ता" करने में सक्षम है?

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

मुझे केवल कतार के संदेशों को "मतदान और खींचने" के उपभोक्ताओं के विचार का समर्थन करने वाली जानकारी मिलती है (उदाहरण के लिए नए संदेशों के लिए कतार मतदान करने के लिए एक विंडोज सेवा का उपयोग करना)। उपभोक्ता/ग्राहक को संदेशों को "धक्का" देने के विचार पर अधिक जानकारी नहीं है ...

+0

आप निश्चित रूप से कतार में सामान की तलाश शुरू करने के लिए उपभोक्ताओं को सूचित करने के लिए आउट-ऑफ-बैंड तंत्र प्राप्त कर सकते हैं, लेकिन यदि आपके कार्य इतने कम हैं कि आप _idling_ की दक्षता के बारे में चिंतित हैं तो कतार क्यों है? – U2EF1

+0

@ यू 2 ईएफ 1 लेकिन फिर भी, उपभोक्ताओं को सूचित करने के लिए आउट-ऑफ-बैंड तंत्र को नए संदेशों को देखने के लिए कुछ प्रकार के "मतदान" का उपयोग करना है, है ना? – user1431072

+0

हां, शायद निम्नतम स्तर पर 'चयन करें' या 'kqueue'। तो, आप लोगों को शायद इसके बारे में चिंता न करें और अपनी बात बनाएं। मुझे 9 5% यकीन है कि मतदान प्रणाली rabbitmq आपके सिस्टम में बाधा नहीं होने वाली है। – U2EF1

उत्तर

-3

खरगोश एमक्यू ब्रोकर ऐसे सर्वर की तरह है जो उपभोक्ता क्लाइंट के बिना उपभोक्ता को डेटा भेज नहीं लेता है। लेकिन फिर प्रश्न नीचे

क्या कर सकते हैं RabbitMQ ग्राहक उपभोक्ता विवरण रख सकता है और पैकेट आने पर ग्राहक से कनेक्ट कर सकता है?

उत्तर नहीं है। तो वैकल्पिक विकल्प क्या है तो अपने आप से प्लगइन लिखें जो किसी प्रकार की कॉन्फ़िगरेशन में क्लाइंट की जानकारी बनाए रखे। प्लगइन RabbitMQ कतार से खींच जाएगा और ग्राहक को धक्का देगा।

कृपया इस प्लगइन को देखने में सहायता कर सकते हैं।
https://www.rabbitmq.com/shovel.html

सच कहूं बोल ग्राहक AMQP प्रोटोकॉल लागू करने के इतना प्राप्त करने की आवश्यकता है और उस के लिए कुछ बंदरगाह पर कनेक्शन सुनने चाहिए। यह ध्वनि किसी अन्य सर्वर की तरह है।

सादर,
विशाल

+0

मुझे पूरी तरह से आश्वस्त नहीं है कि आप RabbitMQ के लिए उचित उपयोग के मामलों को समझते हैं – Shayne

6

ग्राहक के लिए सर्वर धक्का संदेशों होने के दो तरीके ग्राहक को संदेश प्राप्त करने के लिए, और सबसे अनुप्रयोगों के लिए पसंदीदा तरीका है। इसे संदेश सदस्यता के माध्यम से उपभोग करने के रूप में जाना जाता है।

ग्राहक जुड़ा हुआ है। (AMQP/RabbitMQ/सबसे संदेश प्रणाली मॉडल है कि ग्राहक हमेशा जुड़ा है -। निश्चित रूप से, नेटवर्क रुकावट को छोड़कर)

आप ग्राहक एपीआई का उपयोग की व्यवस्था करने की एक कॉलबैक विधि की आपूर्ति करके जो आपके चैनल संदेशों का उपभोग । फिर जब भी कोई संदेश उपलब्ध होता है तो सर्वर चैनल पर क्लाइंट को भेजता है और क्लाइंट एप्लिकेशन इसे एसिंक्रोनस कॉलबैक (आमतौर पर प्रति चैनल एक थ्रेड) के माध्यम से प्राप्त करता है। आप चैनल पर "प्रीफेच गिनती" सेट कर सकते हैं जो उस चैनल पर आपके ग्राहक द्वारा पाइपलाइनिंग की मात्रा को नियंत्रित करता है। वैकल्पिक चैनल पर, एक समय में संदेशों के लिए एक चुनाव करने के लिए ग्राहक के लिए है

(आगे समानांतरवाद के लिए एक आवेदन पत्र एक कनेक्शन है, जो एक आम डिजाइन है कि विभिन्न उद्देश्यों को पूरा करती है पर चल रहे कई चैनलों हो सकता है।) , के माध्यम से विधि प्राप्त करें।

0

थोड़ा देर से उत्तर ... फिर भी, आप निर्माता से एक्सचेंज तक संदेशों को "धक्का" देते हैं। https://www.rabbitmq.com/tutorials/tutorial-three-python.html

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

और, वैसे, आप कभी भी "मतदान" नहीं करते हैं। इसके बजाय, आप हमेशा प्रकाशक की सदस्यता लेते हैं। पर्यवेक्षक पैटर्न के समान। आम तौर पर मैं प्रतिभा सिद्धांत कहूंगा। तो यह पोस्टबॉक्स या पोस्ट ऑफिस के समान है, सिवाय इसके कि संदेश उपलब्ध होने पर आपको एक अधिसूचना भेजती है।

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