2009-08-21 10 views
5

के साथ धीमे पाठकों का पता लगाना मैं एक छोटी होमग्राउंड मैसेजिंग सिस्टम को प्रतिस्थापित करने की कोशिश कर रहा हूं, और zmq के साथ थोड़ा सा खेल रहा हूं। मुझे धीमी पाठकों का पता लगाने की आवश्यकता होगी, और उन्हें बूट/डिस्कनेक्ट करें - धीमे पाठकों का अर्थ यह है कि एक विशेष उपभोक्ता whos कतार का आकार एक निश्चित दहलीज से ऊपर है।zmq (zeromq)

अब तक ऐसा लगता है कि उनमें से एक धीमी गति से पर्याप्त है (लेकिन पर्याप्त है) - लेकिन मुझे संभावित धीमी उपभोक्ता का पता लगाने के लिए कोई रास्ता नहीं मिल रहा है। किसी को भी गीलेर के साथ कोई अनुभव है और यह zmq के साथ कैसे संभव है - या किसी अन्य ब्रोकर-कम संदेश प्रणाली को पुनः प्राप्त करने के लिए है?

+0

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

उत्तर

3

zeromq-2.0.7 के रूप में, आप ZMQ_HWM विकल्प ZMQ_PUB सॉकेट पर सेट कर सकते हैं ताकि ग्राहक के लिए कतारबद्ध अधिकतम संदेशों को नियंत्रित किया जा सके। एक बार हाई-वॉटर मार्क तक पहुंचने के बाद, उस ग्राहक के लिए निर्धारित सभी आगे संदेशों को तब तक गिरा दिया जाएगा जब तक कि कतार का आकार उच्च-पानी के निशान से नीचे गिर जाए। यह आपके द्वारा धीमे पाठक को कॉल करने के लिए समर्पित स्मृति की मात्रा को सीमित करता है।

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

0

इसके बारे में ज़ीरोमैक गाइड में एक अनुभाग है, यह "Suicidal Snail Pattern" कॉल करने वाले पैटर्न को कार्यान्वित करने का सुझाव देता है।

असल में, यह निर्भरता को उलट देता है और धीमे ग्राहकों को धीमा पाठकों बनने का पता लगाने के लिए उन्हें एक रास्ता देकर खुद को डिस्कनेक्ट/मारने के लिए मनाने की कोशिश करता है।

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