मैं emtttd ( emqtt.io ) चला रहा हूं । मैं एक अलग प्रक्रिया से कनेक्ट करने और डिस्कनेक्ट करने वाले क्लाइंट की निगरानी करना चाहूंगा, जो एक सिस्टम विषय की सदस्यता लेगा जहां जन्म और संदेश पोस्ट किए जाएंगे। ऐसा करने का सही तरीका क्या है?
मैं emtttd ( emqtt.io ) चला रहा हूं । मैं एक अलग प्रक्रिया से कनेक्ट करने और डिस्कनेक्ट करने वाले क्लाइंट की निगरानी करना चाहूंगा, जो एक सिस्टम विषय की सदस्यता लेगा जहां जन्म और संदेश पोस्ट किए जाएंगे। ऐसा करने का सही तरीका क्या है?
जवाबों:
मैं एक अलग प्रक्रिया से कनेक्ट करने और डिस्कनेक्ट करने वाले क्लाइंट की निगरानी करना चाहूंगा, जो एक सिस्टम विषय की सदस्यता लेगा जहां जन्म और संदेश पोस्ट किए जाएंगे।
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)
खैर, जन्म संदेश और LWT के बारे में निश्चित नहीं है (अंतिम इच्छा और वसीयतनामा) कल्पना के अनुसार वैकल्पिक है। इसलिए, जब तक आप अपने ब्रोकर को ऐसी आवश्यकताओं के लिए अनुकूलित नहीं करते, आपको आवश्यक रूप से संदेश नहीं मिलेगा।