MQTT quel est le but ou l'utilisation de Dernière Volonté Testament?
Je suis sûrement raté quelque chose sur la façon dont l'ensemble du protocole MQTT œuvres, comme je ne peux pas saisir le modèle d'utilisation des Dernier Testament messages: quel est leur but?
Un exemple, je vois souvent est d'informer que l'appareil est passé en mode hors connexion. Il ne fait pas beaucoup de sens pour moi, puisqu'il est évident que si un périphérique n'est pas de publier des données, il peut être hors ligne ou il pourrait y avoir quelques problèmes de réseau.
Alors, quelles sont certaines des pratiques les usages de l'LWT? Ce qu'il a été inventé pour?
Vous devez vous connecter pour publier un commentaire.
LWT les messages ne sont pas très inquiète à propos de détecter si un client est maintenant hors ligne ou pas (cette tâche est assurée par des messages keepAlive).
LWT les messages sont sur le ce qui se passe après que le client a passé en mode hors connexion.
L'analogie est celle d'un réel dernier:
Si une personne meurt, elle peut formuler un testament, dans lequel elle déclare que des mesures devraient être prises après qu'elle a disparu. Un exécuteur testamentaire vais tenir compte de ces désirs et de les exécuter en son nom.
L'analogie dans le MQTT monde, c'est qu'un client peut formuler un testament, dans lequel il déclare ce message doit être envoyé en son nom par le courtier, après qu'il a disparu en mode hors connexion.
Un exemple fictif:
J'ai un capteur qui envoie des données cruciales, mais très rarement.
Il a formulé une dernière déclaration dans la forme de [thème: "/node/parti-hors ligne", message: ':id'], avec :id un identifiant unique pour le capteur. J'ai aussi un d'urgence-abonné pour le sujet "node/parti-hors ligne", qui enverra un SMS sur mon téléphone à chaque fois qu'un message est publié sur ce canal.
Pendant le fonctionnement normal, le capteur sera de garder la connexion à la MQTT-courtier ouvert par l'envoi périodique des messages keepAlive intercalés avec les capteurs. Si le capteur passe en mode hors connexion, la connexion au courtier le temps, en raison de l'absence de connexions actives.
C'est là que LWT vient: Si pas de LWT est spécifié, le courtier n'a pas de soins et ferme la connexion. Dans notre cas cependant, le courtier va exécuter le capteur de dernière volonté et de publier la LWT-message "/node/parti-hors ligne: :id'. Le message sera ensuite consommés à mon d'urgence-abonné et je serai informé de l'identification du capteur via SMS afin que je puisse vérifier ce qu'il se passe.
En bref:
Au lieu de simplement fermer la connexion après un client a passé en mode hors connexion, LWT messages peuvent être mis à profit pour définir un message publié par le courtier pour le compte du client, car le client est hors ligne et ne peut pas publier plus.
Juste parce qu'un appareil n'est pas de publication ne signifie pas qu'il n'est pas en ligne ou il y a un problème de réseau.
Prendre pour exemple un capteur qui surveille une valeur qui change seulement en de très rares occasions, un bon design dit que le capteur ne doit publier les changements pour aider à réduire l'utilisation de la bande passante périodiquement la publication de la même valeur, c'est du gaspillage. Si la valeur est publié en tant que valeur retenue puis tout nouvel abonné sera toujours obtenir la valeur actuelle sans avoir à attendre pour le capteur de la valeur à modifier et il le publier à nouveau.
Dans ce cas, la LWT est utilisé pour publier lorsque le capteur ne parvient pas (ou il y a un problème de réseau), de sorte que nous savons de la le problème le plus rapidement au client de conserver en vie expire.
Un article de fond sur le Dernier-Va-et-Testament messages est disponible dans la MQTT Essentials Blog de la série: http://www.hivemq.com/mqtt-essentials-part-9-last-will-and-testament/.
Pour résumer le post de blog:
La Testament fonction est utilisée dans MQTT pour informer les autres clients sur un ungracefully client déconnecté.
MQTT est souvent utilisé dans les scénarios n'étaient pas fiables réseaux sont très fréquents. Par conséquent, il est supposé que certains clients se déconnecter ungracefully de temps à autre, parce qu'ils ont perdu la connexion, la batterie est vide ou tout autre cas imaginables. Il serait bon de savoir si un client connecté déconnecté gracieusement (ce qui signifie qu'avec un MQTT DÉBRANCHEZ message) ou non, afin de prendre les mesures appropriées.