MQTT जन्म की सदस्यता और विषय होगा? (Emqttd)


11

मैं emtttd ( emqtt.io ) चला रहा हूं । मैं एक अलग प्रक्रिया से कनेक्ट करने और डिस्कनेक्ट करने वाले क्लाइंट की निगरानी करना चाहूंगा, जो एक सिस्टम विषय की सदस्यता लेगा जहां जन्म और संदेश पोस्ट किए जाएंगे। ऐसा करने का सही तरीका क्या है?


3
IoT SE में आपका स्वागत है। क्या आप सेटअप पर थोड़ा और विस्तार कर सकते हैं? आप किस तरह की मशीन पर emqttd चला रहे हैं और किस संस्करण में हैं?
Helmar

जवाबों:


5

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

emqtt का यूजर गाइड एक सिस्टम विषय दिखाता है जो कुछ ब्रोकर सांख्यिकी $SYS/brokers/${node}/stats/clients/countप्रदान करता है , अर्थात वर्तमान जुड़े ग्राहकों की गिनती प्रदान करता है। ध्यान दें कि यह कनेक्ट किए गए क्लाइंट के बारे में कोई विवरण नहीं सूचीबद्ध करेगा - इसलिए मैं इसे लेता हूं जो कि यहां आवश्यक नहीं है।

अंतिम वसीयत (LWT, लास्ट विल एंड टेस्टामेंट) संदेश ओटोह एक सिस्टम विषय नहीं है, लेकिन एक नियमित विषय है जो क्लाइंट द्वारा कनेक्ट के रूप में सेट किया गया है। यदि आप उस विषय की निगरानी करना चाहते हैं तो बस सदस्यता लें। हालांकि ध्यान दें कि यदि ग्राहक किसी डिसकनेक्ट मैसेज को भेजकर विनम्रतापूर्वक डिस्कनेक्ट कर देता है तो LWT संदेशों को छोड़ दिया जाता है (देखें hiveMQ ब्लॉग , बढ़िया पढ़ें btw)।

emqtt की यूजर गाइड ग्राहकों को जोड़ने और डिस्कनेक्ट करने की निगरानी करने का बेहतर तरीका प्रस्तुत करती है:

./bin/emqttd_ctlकमांड लाइन क्वेरी और व्यवस्थापक EMQ दलाल (विंडोज पर काम नहीं कर) के लिए इस्तेमाल किया जा सकता है।

मुझे लगता है कि निगरानी clients list- सभी MQTT क्लाइंट को सूचीबद्ध करें - और clients show <ClientId>- MQTT क्लाइंट दिखाएं - यहां सबसे अधिक सहायक हैं। ग्राहकों की निगरानी के लिए नियोजित अलग प्रक्रिया इसलिए ब्रोकर की सदस्यता लेने की आवश्यकता नहीं है, लेकिन ./bin/emqttd_ctlइसके बजाय बस उपयोग करें ।

    $ ./bin/emqttd_ctl clients list
    Client(mosqsub/43832-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64896, connected_at=1452929113)
    Client(mosqsub/44011-airlee.lo, clean_sess=true, username=test, peername=127.0.0.1:64961, connected_at=1452929275)

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

1

खैर, जन्म संदेश और LWT के बारे में निश्चित नहीं है (अंतिम इच्छा और वसीयतनामा) कल्पना के अनुसार वैकल्पिक है। इसलिए, जब तक आप अपने ब्रोकर को ऐसी आवश्यकताओं के लिए अनुकूलित नहीं करते, आपको आवश्यक रूप से संदेश नहीं मिलेगा।


LWT डिस्कनेक्ट किए गए क्लाइंट की ओर से ब्रोकर का कार्य करता है। लागू करना जो ब्रोकर के लिए वैकल्पिक नहीं है। यह ग्राहक के लिए अंतिम विषय बनाने के लिए केवल वैकल्पिक है।
घनिमा

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