TD2 Dare MQTT
TD2 Dare MQTT
TD2 Dare MQTT
1
Université Constantine 2 –Abdelhamid mehri
Faculté des nouvelles technologies
Département du IFA / Master 1 Matière DARE
Un « topic MQTT » ou canal d’informations, c’est une chaîne de caractères permettant de sélectionner finement les
informations qu’on désire, elle peut avoir une hiérarchie de niveaux utilisant les caractèresspéciaux suivants : « / » « + » « # »
(voir l’exemple ci-après).
Les messages envoyés par les clients peuvent être de toutes sortes mais ne peuvent excéder une taille de 256 Mo.
MQTT considère à la fois le serveur et le client comme des émetteurs et récepteur. La livraison d'un message peut
être soit d'un émetteur à un seul destinataire, soit d'un serveur à plus d'un destinataire (client).
- Le niveau de QoS 0 : (atmost once) que l’on pourrait qualifier de fire-and-forget, l’émetteur se contente d’envoyer
le message, sans se soucier de savoir s’il a bien été reçu et pris en compte.
- Le niveau de QoS 1 : (at least once) garantit que le message sera envoyé au moins une fois, l’émetteur attend la
confirmation que son message a bien été reçu avant de l’effacer. Néanmoins, un message peut être dupliqué lors
de la distribution. PUBACK est un message d’acquittement pour PUBLISH avec le niveau de QoS=1.
- Le niveau de QoS 2 : (exactly once) l’émetteur attend la confirmation que le message et bien arrivé au subscriber
avant de l’effacer. PUBREC (record) est la réponse à un message PUBLISH avec QoS = 2. Le serveur ne détruit
le message que s’il reçoit une confirmation de l’émetteur qui est PUBREL (release). PUBREL est la réponse à
PUBREC. Le serveur renvoi un PUBCOMP (complete) alors l’émetteur peut détruire le message. En attendant,
toute publication portant le même identifiant est considérée comme un duplicata du message, qui ne sera donc
pas publié à nouveau par le serveur.
e) Persistance : MQTT donne au client la possibilité de choisir au moment de la connexion s’il souhaite que sa
souscription (subscription) soit conservée par le serveur une fois déconnecté. Dans ce cas, lors d’une éventuelle
reconnexion sa souscription est restaurée et le client recevra alors les messages mis en attente dont la QoS est
supérieure à zéro (les topics auxquels le client a souscrit sont conservés ainsi que le niveau de QoS qu’il a défini pour
lui-même). Il s’agit ici essentiellement d’une persistance en mémoire, qui sert surtout pour les cas où la connexion
réseau risque d’être interrompue. En revanche, il n’est pas imposé que le serveur et le client disposent d’un mécanisme
de persistance en cas d’arrêt brutal du logiciel (par exemple sur le disque), ce type de persistance nécessite des
dispositifs et des algorithmes de tolérance aux pannes dédiés, à différents niveaux du système (du niveau applicatif
niveau physique).
f) Messages retenus : Afin de pouvoir fournir aux nouveaux Subscriber des données rapidement même lorsque le
Publisher ne publie pas à intervalles réguliers, il est possible d’indiquer au serveur de retenir une publication reçue
comme dernière publication connue pour un topic donné, qui sera transmise aux nouveaux Subscriber dès leur
souscription.
g) Testament : Lors de son enregistrement auprès du serveur, un client a la possibilité d’enregistrer un testament (WILL
message), autrement dit un message à publier par le serveur en cas de déconnexion anormale du client. Ce message
sera publié sur un topic choisi par le client.
Questions
1. Donnez la description complète de toutes les classes nécessaires pour la modélisation du protocole MQTT (remplissez
tous les compartiments).
2. Etablir le diagramme de classe correspondant à la description du protocole.
3. Elaborer le diagramme de séquence correspondant au protocole MQTT.
Recommandation : élaborer, en premier lieu, les fragments élémentaires des interactions décrites dans la section
N°5. Puis en déduire le diagramme complet.