क्या क्लाइंट तक पहुंचने तक एमक्यूटीटी क्यूओएस स्तर को संरक्षित करने का एक तरीका है?


9

MQTT प्रेषकों को सेवा की गुणवत्ता (QoS) स्तर निर्धारित करने की अनुमति देता है, जो इस बारे में निश्चित गारंटी प्रदान करता है कि क्या संदेश प्राप्त होगा (और क्या डुप्लिकेट की अनुमति है)। HiveMQ के इस लेख में डाउनग्रेडिंग की समस्या पर प्रकाश डाला गया है , जहाँ कम QoS स्तर वाला ग्राहक उस संदेश को प्राप्त नहीं करेगा जिसकी गारंटी प्रेषक द्वारा मांगी गई है:

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

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

जवाबों:


8

MQTT के साथ काम करते समय एक बात याद रखें कि "ग्राहक और प्रकाशक दोनों को MQTT क्लाइंट माना जाता है"।

जैसा कि प्रकाशित करते समय QoS सेट पूरी तरह से ब्रोकर से संबंधित है (B) अन्य क्लाइंट नहीं। इसलिए यह सुनिश्चित करने के लिए कि सब्सक्राइबर (एस) को वह सब कुछ प्राप्त हो रहा है जो प्रकाशक (पी) प्रकाशित कर रहा है, एक को क्यूओएस 1 का उपयोग करने की आवश्यकता है।

आइए मामलों को देखें: P - QoS 0 के साथ भेजता है जिसका अर्थ है कि प्रत्येक संदेश B पर एक बार (एक बार या शून्य) होगा। इस स्थिति में यदि S ने QoS 0 के साथ B की सदस्यता ले ली है - इस बात की कोई गारंटी नहीं है कि जब भी ब्रोकर (B) को एक संदेश प्राप्त होता है, जो अंततः S तक पहुंचने वाला है। QoS 1 - S निश्चित रूप से QoS 2 प्राप्त करेगा - S ब्रोकर करते समय कई संदेश प्राप्त नहीं करेगा

यदि हम अन्य QoS के साथ भी ऐसा ही करते हैं। हमें पता चल जाएगा कि QoS1 ग्राहकों के लिए सभी स्तरों के साथ अच्छा काम करता है क्योंकि QoS 1 सभी का सुपरसेट है।


MQTT उसी के लिए कोई संकेत प्रदान नहीं करता है लेकिन हम सदस्यता लेते समय QoS 1 का उपयोग करके प्रेषक के QoS प्राप्त कर सकते हैं।


4

क्यूओएस 1 या 2 स्तर केवल यह आश्वासन देते हैं कि प्रकाशित संदेश ब्रोकर के पास पहुंचा। सब्सक्राइबर QoS 1 या 2 ब्रोकर को आश्वस्त करता है कि संदेश प्राप्त हो गया था।

1 या 2 के साथ प्रकाशित करने का मतलब यह नहीं है कि कोई भी सुन रहा है।

आपका उपयोग मामला क्या है?


3
जवाब में सवाल न पूछें। यदि कुछ स्पष्ट नहीं है तो पहले एक टिप्पणी छोड़ दें।
बेंस कौलिक्स

मैं किसी भी स्थिति के बारे में उत्सुक हूं, जहां आपके पास संदेश ब्रोकर को डेटा भेजने वाला सेंसर हो सकता है, फिर कंप्यूटर या किसी अन्य प्रोसेसर पर भेजा जा सकता है जहां यह महत्वपूर्ण है कि क्यूओएस गारंटी रखी जाती है।
अरोरा ०१०
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.