5

मुझे एक ऐसी प्रणाली बनाने की आवश्यकता है जो प्रकाशित/सदस्यता बस (जैसे मुले, ज़ीरोएमक्यू, खरगोश एमक्यू) का उपयोग करे, लेकिन साहित्य का तात्पर्य है कि ग्राहक अनुप्रयोग विषयों से संदेश प्राप्त करने के लिए विश्वसनीय रूप से उपलब्ध हैं जैसे ही पब/उप बस संदेश देने में सक्षम है, वैसे ही वे सब्सक्राइब करते हैं।पबसब + अविश्वसनीय रूप से मौजूदा ग्राहकों को विश्वसनीय संदेश वितरण

मेरे पास एक ऐसी प्रणाली है जहां कुछ एप्लिकेशन विश्वसनीय रूप से प्रकाशित/सदस्यता बस से जुड़े होंगे, लेकिन अन्य एप्लिकेशन हर समय बस से सक्रिय या कनेक्ट नहीं होंगे।

स्पष्ट समाधान अविश्वसनीय एप्लिकेशन और प्रकाशित/सदस्यता बस के बीच कुछ प्रकार की "उपस्थिति" प्रोटोकॉल होना है ताकि "वर्तमान" अनुप्रयोगों को तुरंत उनके संदेश वितरित हो जाएं, और "उपस्थित नहीं" अनुप्रयोगों में उनके संदेश कतारबद्ध हैं किसी तरह के लगातार बफर में, और जैसे ही वे "उपस्थिति हैंडशेक" पूरा करते हैं, कतारबद्ध संदेश नए वर्तमान एप्लिकेशन को वितरित किए जाते हैं।

क्या कोई ऐसी प्रकाशन/सदस्यता बस है जिसमें इस तरह की सुविधा बनाई गई है, या क्या कोई ओपन-सोर्स ऐड-ऑन है जो ऐसा करता है? क्या आप मुझे किसी भी यूआरएल को इंगित कर सकते हैं जो इसका वर्णन करता है?

उत्तर

4

आप किसी भी एएमक्यूपी-अनुपालन दलाल (जैसे कि खरगोश एमक्यू) के साथ इस व्यवहार को आसानी से प्राप्त कर सकते हैं।

अपने उपयोग मॉडल के लिए सही विनिमय प्रकार चुनें। यदि आप हमेशा पूरी तरह से नामित गंतव्यों, chat.messages जैसे कुछ भेज रहे हैं, तो आप direct एक्सचेंज का उपयोग करना चाहेंगे।

यदि आप पैटर्न-आधारित रूटिंग करना चाहते हैं, तो आप topic एक्सचेंज का उपयोग करना चाहेंगे। फिर आप chat.messages.* जैसे पैटर्न के आधार पर मार्ग बना सकते हैं।

रूटिंग RabbitMQ Tutorials में अधिक विस्तार से वर्णित है।

आपके द्वारा उल्लिखित निरंतर सदस्यता बनाने के लिए, प्रत्येक ग्राहक एक कतार बनाते हैं जो उस ग्राहक के लिए निजी है। कतार तब आपके चुने हुए एक्सचेंज पर प्रासंगिक रूटिंग कुंजी से जुड़ी होती है।

चूंकि प्रत्येक ग्राहक की अपनी कतार होती है, इसलिए उपभोक्ता निष्क्रिय या डिस्कनेक्ट होने पर सक्रिय और संग्रहीत होने पर ग्राहकों द्वारा संदेश उपभोग किया जाएगा।

0

आप अपनी पसंद के भाषा का उल्लेख नहीं किया है, लेकिन जावा में आप JMS का उपयोग कर durable subscribers साथ ऐसा कर सकते हैं। जेएमएस (there are many, उपर्युक्त RabbitMQ समेत) का कोई भी कार्यान्वयन इस सुविधा का समर्थन करेगा।

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