Pris en charge par
Javascript
Protocole SGC par défaut et MQTT implémentent QoS (Qualité de service) pour la livraison des messages. Il existe 3 types différents :
Niveau 0 : « Au plus une fois », où les messages sont livrés selon les meilleurs efforts du réseau TCP/IP sous-jacent. Des pertes ou des doublons de messages peuvent survenir. Ce niveau pourrait être utilisé, par exemple, avec des données de capteurs ambiants où la perte d'une lecture individuelle n'a pas d'importance car la suivante sera publiée peu après.
Niveau 1 : « Au moins une fois », où les messages sont assurés d'arriver mais des doublons peuvent se produire.
Niveau 2 : « Exactement une fois », où les messages sont assurés d'arriver exactement une fois. Ce niveau peut être utilisé, par exemple, dans les systèmes de facturation où les messages en double ou perdus pourraient entraîner des frais incorrects.
Le message est délivré selon les meilleures capacités du réseau TCP/IP sous-jacent. Aucune réponse n'est attendue et aucune sémantique de nouvelle tentative n'est définie dans le protocole. Le message arrive au serveur une fois ou pas du tout.
Le tableau ci-dessous présente le flux du protocole QoS niveau 0.
| Client | Message et direction | Serveur |
|---|---|---|
| QoS = 0 | PUBLISH ----------> |
Action : Publier un message aux abonnés |
La réception d'un message par le serveur est accusée réception par un message ACCUSÉ DE RÉCEPTION. En cas d'échec identifié de la liaison de communication ou de l'appareil émetteur, ou si le message d'accusé de réception n'est pas reçu après une période spécifiée, l'expéditeur renvoie le message. Le message arrive au serveur au moins une fois.
Un message avec le niveau QoS 1 a un ID de message dans le message.
Le tableau ci-dessous montre le flux de protocole QoS niveau 1.
| Client | Message et direction | Serveur |
|---|---|---|
| QoS
= 1 ID de message = x Action : Stocker le message |
PUBLISH ----------> |
Actions :
|
| Action : Ignorer le message | ACCUSÉ DE RÉCEPTION<---------- |
Si le client ne reçoit pas de message ACKNOWLEDGMENT (soit dans un délai défini dans l'application, soit si une défaillance est détectée et que la session de communication est redémarrée), le client peut renvoyer le message PUBLISH.
Des flux de protocole supplémentaires au-dessus du niveau QoS 1 garantissent que les messages en double ne sont pas délivrés à l'application réceptrice. Il s'agit du niveau de livraison le plus élevé, à utiliser lorsque les messages en double ne sont pas acceptables. Il y a une augmentation du trafic réseau, mais c'est généralement acceptable en raison de l'importance du contenu des messages.
Un message avec le niveau QoS 2 a un identifiant de message dans le message.
Le tableau ci-dessous montre le flux de protocole de niveau 2 QoS. Il existe deux sémantiques disponibles pour la façon dont un flux PUBLISH doit être géré par le destinataire.
| Client | Message et direction | Serveur |
|---|---|---|
| QoS
= 2 Message ID = x Action : Stocker le message |
PUBLISH ----------> |
Action : Stocker le message |
PUBREC <---------- |
Message ID = x | |
| Message ID = x | PUBREL ---------->
|
Actions :
|
| Action : Ignorer le message | ACKNOWLEDGEMENT <---------- |
Message ID = x |
Si une défaillance est détectée, ou après une période définie, le flux de protocole est réessayé à partir du dernier message de protocole non acquitté. Les flux de protocole supplémentaires garantissent que le message est livré aux abonnés exactement une fois.