# सदस्यता न लें - तो कैसे सभी संदेशों को मॉस्किटो के साथ डेटाबेस में डंप करें?


16

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

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

या तो है?

  • मच्छर दलाल के लिए एक समान प्रणाली (विस्तार / प्लगइन),
  • एक और अनुशंसित विधि जो मच्छर के साथ काम करती है, या
  • उचित प्रमाण है कि यह दृष्टिकोण बिल्कुल अनावश्यक है, यानी जो ग्राहक सदस्यता ले #सकता है वह ठीक कर सकता है?

/programming//q/31584613/3984613 इस प्रश्न को पूरी तरह से संबोधित नहीं करता है।

जवाबों:


12

मच्छर दलाल के लिए एक समान प्रणाली (विस्तार / प्लगइन)

जहां तक ​​मुझे पता है कि मच्छर दलाल के लिए कोई प्लगइन / विस्तार नहीं है (कम से कम कोई ओपनसोर्स एक नहीं)

एक और अनुशंसित विधि जो मच्छर के साथ काम करती है

वैसे मैं मॉस्किटो ब्रोकर और एडब्ल्यूएस आईओटी के साथ अपने अनुभव के अनुसार कह सकता हूं, आप सीधे '#' की सदस्यता ले सकते हैं

उचित प्रमाण

इस प्रश्न को देखने के बाद, मैं थ्रूपुट सीमाओं को जानने और यह जानने के लिए थोड़ा उत्सुक था कि क्या विस्तार प्रणाली की आवश्यकता है। इसलिए मैंने निम्नलिखित सेट किया:

  • 100 AWS लैम्ब्डा कार्य करता है जो गेटवे (EC2 उदाहरण t2.nano500MB RAM) में कुछ यादृच्छिक डेटा भेजने के लिए आभासी अंत उपकरणों के रूप में कार्य करता है
  • प्रत्येक 60 सेकंड के फ़ंक्शंस को गेटवे पर अलग-अलग विषयों पर डेटा प्रकाशित करने के लिए ट्रिगर किया जाता है (lambdatoec2 / {VariableTopicNumberFrom1-100}
  • EC2 का उदाहरण मॉस्किटो 1.4.10 चल रहा है

अब तक, मैं देख रहा हूं कि बिना किसी एक्सटेंशन सिस्टम के # सदस्यता लेने में कोई समस्या नहीं है। लेकिन फिर से मुझे अभी भी कुछ एज केस परिदृश्यों के लिए परीक्षण करना है (मैं एक बार उत्तर अपडेट करूंगा)।


"सही" उत्तर परीक्षण है। यदि यह प्रदर्शित किया जा सकता है कि आपके सिस्टम का प्रदर्शन # से सब्सक्राइबर जोड़कर प्रतिकूल रूप से प्रभावित हो रहा है, तो ब्रोकर को # सदस्यता हटाने के लिए पुनः कॉन्फ़िगर करें। मैंने यह उत्तर इसलिए दिया क्योंकि @bravokeyl ने ठीक यही किया।
जॉन डिटर

11

OpenHAB मेलिंग सूची पर यह चर्चा# सभी संदेशों को प्राप्त करने के लिए सदस्यता के रूप में उपयोग करने के साथ कोई समस्या नहीं है, ऐसा लगता है :

MQTT उपकरणों के समस्या निवारण के दौरान, मेरे साथ यह हुआ कि कभी-कभी मैं चाहता था कि मैं किसी विशिष्ट विषय के बजाय सभी MQTT संदेशों को देख सकूं जो कि मॉस्किटो ब्रोकर देखता है। क्या इसे करने का कोई तरीका है?

इस प्रश्न का उत्तर किसी ने आपके लिए मॉस्किटो सूची में दिया है; एक वाइल्डकार्ड का उपयोग करें। (#)

यह स्टैक ओवरफ्लो प्रश्न भी यही विधि बताता है:

# को सब्सक्राइब करना आपको उन विषयों के अलावा सब कुछ की सदस्यता देता है, जो एक $ से शुरू होते हैं (ये आमतौर पर वैसे भी विषयों को नियंत्रित करते हैं)।

यह जानना बेहतर है कि आप पहली बार क्या सदस्यता ले रहे हैं, निश्चित रूप से, और ध्यान दें कि कुछ ब्रोकर कॉन्फ़िगरेशन # स्पष्ट रूप से सदस्यता को अस्वीकार कर सकते हैं।

जैसा कि बेंस कौलिक्स द्वारा कहा गया है , विनिर्देश वह है जो #मान्य है:

गैर मानक टिप्पणी

  • "" "मान्य है और हर एप्लिकेशन संदेश प्राप्त करेगा

ईमानदारी से, मैं यह दावा करता हूं कि क्या मूल दावा वास्तव में बहुत मायने रखता है:

कारण यह है कि अक्सर सदस्यता लेने वाला ग्राहक उन संदेशों के भार को संसाधित करने में सक्षम नहीं होता है जो उसके रास्ते में आ रहे हैं।

अगर ऐसा है, तो दलाल पहली बार में संदेशों को कैसे संभाल सकता है? जब तक आपके ग्राहक के पास ब्रोकर के समान प्रदर्शन विशेषताएँ होती हैं, मुझे दृढ़ता से संदेह है कि क्लाइंट को अभिभूत करना संभव होगा, क्योंकि ट्रैफ़िक का वह स्तर भी ब्रोकर को अभिभूत कर देगा और पहले दुर्घटना का कारण बनेगा।

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


10

मुझे लगता है कि यह विचार करना महत्वपूर्ण है कि एमक्यूटीटी दलालों के लिए कई अलग-अलग उपयोग के मामले हैं, जैसा कि किसी भी सॉफ्टवेयर के टुकड़े के साथ है।

एक अरब उपयोगकर्ताओं के लिए चैट संदेशों को संभालना (कई उपयोगकर्ता, प्रति उपयोगकर्ता अपेक्षाकृत कम संदेश दर) कुछ ग्राहकों के साथ एक प्रणाली के लिए अलग है, लेकिन एक उच्च संदेश दर है, और वे दोनों एक घर स्वचालन प्रणाली (कुछ ग्राहकों, कम संदेश दर) के लिए अलग हैं ।

HiveMQ बहुत उच्च ग्राहक / संदेश दर अनुप्रयोगों के बारे में सोच रहे हैं - जिस स्थिति में दलाल की क्षमता लगभग निश्चित रूप से एक ग्राहक से अधिक है।

यदि आप #अपने होम ऑटोमेशन सिस्टम में सदस्यता लेना चाहते हैं तो यह वास्तव में समस्याओं का कारण नहीं है। आप देख सकते हैं और देख सकते हैं कि ब्रोकर किसी भी मामले में अत्यधिक सीपीयू का उपयोग कर रहा है या नहीं।

अन्य उत्तरों की तरह, #सब 'नॉर्मल' विषयों को देने के लिए सब्सक्राइब करना , यह एक ऐसी चीज है जो किसी के साथ शुरू नहीं होती है $। मैं कह रही है कि प्रत्येक विषय के साथ शुरुआत के रूप में कल्पना की व्याख्या $अपने आप में एक पूरी अलग पेड़ है, तो आप की सदस्यता के लिए होगा $SYS/#, $whatever/#प्राप्त करने के लिए सब कुछ । आप सबसे अधिक संभावना है कि वैसे भी एक सामान्य अनुप्रयोग के लिए नहीं करना चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.