Qualité de service

Pris en charge par

 

TsgcWSPServer_sgc

TsgcWSPClient_sgc

TsgcWSPClient_MQTT

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.

 

 

Niveau 0

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

Niveau 1

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 :
  • Stocker le message

  • Publier un message pour les abonnés
  • Supprimer le message

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.

 

Niveau 2

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 :
  • Publier un message aux abonnés
  • Supprimer le message
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.