Ondersteund door
Java script
SGC Default Protocol en MQTT implementeren QoS (Quality of Service) voor berichtbezorging. Er zijn 3 verschillende typen:
Level 0: "Ten hoogste één keer", waarbij berichten worden afgeleverd op basis van de beste inspanning van het onderliggende TCP/IP-netwerk. Berichtverlies of -duplicatie kan voorkomen. Dit niveau kan bijvoorbeeld worden gebruikt bij omgevingssensorgegevens waarbij het niet uitmaakt als een individuele meting verloren gaat, omdat de volgende binnenkort wordt gepubliceerd.
Niveau 1: "Ten minste één keer", waarbij berichten gegarandeerd aankomen maar duplicaten kunnen optreden.
Niveau 2: "Precies één keer", waarbij berichten gegarandeerd precies één keer aankomen. Dit niveau kan bijvoorbeeld worden gebruikt bij factureringssystemen waar dubbele of verloren berichten tot onjuiste kosten kunnen leiden.
Het bericht wordt bezorgd op basis van de best efforts van het onderliggende TCP/IP-netwerk. Er wordt geen antwoord verwacht en er zijn geen herproefsemantiek gedefinieerd in het protocol. Het bericht arriveert op de server eenmaal of helemaal niet.
De onderstaande tabel toont de protocoltroom voor QoS-niveau 0.
| Client | Bericht en richting | Server |
|---|---|---|
| QoS = 0 | PUBLISH ----------> |
Actie: Publiceer een bericht naar abonnees |
De ontvangst van een bericht door de server wordt bevestigd door een ACKNOWLEDGEMENT-bericht. Als er een geïdentificeerd falen is van de communicatieverbinding of het verzendende apparaat, of als het bevestigingsbericht niet wordt ontvangen na een bepaalde periode, verzendt de afzender het bericht opnieuw. Het bericht komt ten minste één keer aan bij de server.
Een bericht met QoS-niveau 1 heeft een bericht-ID in het bericht.
De onderstaande tabel toont de QoS niveau 1-protocolstroom.
| Client | Bericht en richting | Server |
|---|---|---|
| QoS
= 1 Message ID = x Actie: Bericht opslaan |
PUBLISH ----------> |
Acties:
|
| Actie: Bericht verwijderen | BEVESTIGING<---------- |
Als de client geen ACKNOWLEDGMENT-bericht ontvangt (binnen een tijdsperiode gedefinieerd in de applicatie, of als er een storing wordt gedetecteerd en de communicatiesessie opnieuw wordt gestart), mag de client het PUBLISH-bericht opnieuw verzenden.
Aanvullende protocolstromen boven QoS-niveau 1 zorgen ervoor dat dubbele berichten niet aan de ontvangende applicatie worden afgeleverd. Dit is het hoogste leveringsniveau, te gebruiken wanneer dubbele berichten niet acceptabel zijn. Er is een toename in netwerkverkeer, maar dat is doorgaans acceptabel vanwege het belang van de berichtinhoud.
Een bericht met QoS-niveau 2 heeft een bericht-ID in het bericht.
De onderstaande tabel toont de QoS-niveau 2-protocolstroom. Er zijn twee semantieken beschikbaar voor hoe een PUBLISH-stroom moet worden afgehandeld door de ontvanger.
| Client | Bericht en richting | Server |
|---|---|---|
| QoS
= 2 Bericht-ID = x Actie: Bericht opslaan |
PUBLISH ----------> |
Actie: Bericht opslaan |
PUBREC <---------- |
Bericht-ID = x | |
| Bericht-ID = x | PUBREL ----------> |
Acties:
|
| Actie: Bericht verwijderen | BEVESTIGING <---------- |
Bericht-ID = x |
Als een fout wordt gedetecteerd, of na een gedefinieerde tijdsperiode, wordt de protocolvolgorde opnieuw geprobeerd vanaf het laatste niet-bevestigde protocolbericht. De aanvullende protocolstromen zorgen ervoor dat het bericht precies één keer aan abonnees wordt bezorgd.