Quality Of Service

Unterstützt von

 

TsgcWSPServer_sgc

TsgcWSPClient_sgc

TsgcWSPClient_MQTT

Java script

 

 

SGC Default Protocol und MQTT implementieren QoS (Quality of Service) für die Nachrichtenzustellung. Es gibt 3 verschiedene Typen:

 

Level 0: "At most once", bei dem Nachrichten gemäß dem besten Bemühen des zugrunde liegenden TCP/IP-Netzwerks zugestellt werden. Nachrichtenverlust oder -duplizierung kann auftreten. Diese Stufe könnte zum Beispiel mit Umgebungs- sensordaten verwendet werden, bei denen es nicht darauf ankommt, ob eine einzelne Messung verloren geht, da die nächste bald darauf veröffentlicht wird.

 

Level 1: "At least once", bei dem garantiert wird, dass Nachrichten ankommen, aber Duplikate auftreten können.

 

Level 2: "Genau einmal", bei dem garantiert wird, dass Nachrichten genau einmal eintreffen. Diese Ebene könnte zum Beispiel bei Abrechnungssystemen verwendet werden, bei denen doppelte oder verlorene Nachrichten zu falsch angewendeten Gebühren führen könnten.

 

 

Level 0

Die Nachricht wird nach bestem Bemühen des zugrunde liegenden TCP/IP-Netzwerks zugestellt. Es wird keine Antwort erwartet und im Protokoll sind keine Wiederholungssemantiken definiert. Die Nachricht trifft entweder einmal oder gar nicht beim Server ein.

 

Die folgende Tabelle zeigt den Protokollablauf für QoS-Level 0.

 

Client Message and direction Server
QoS = 0 PUBLISH
---------->
Action: Veröffentlicht eine Nachricht an Abonnenten

Level 1

Der Empfang einer Nachricht durch den Server wird durch eine ACKNOWLEDGEMENT-Nachricht bestätigt. Wenn ein identifizierter Ausfall entweder der Kommunikationsverbindung oder des Sendegeräts vorliegt oder die Bestätigungsnachricht nicht innerhalb eines bestimmten Zeitraums empfangen wird, sendet der Sender die Nachricht erneut. Die Nachricht erreicht den Server mindestens einmal.

 

Eine Nachricht mit QoS-Level 1 hat eine Message-ID in der Nachricht.

 

Die folgende Tabelle zeigt den QoS-Level-1-Protokollablauf.

 

Client Message and direction Server
QoS = 1
Message ID = x

Action: Nachricht speichern

PUBLISH
---------->
Actions:
  • Nachricht speichern

  • Eine Nachricht an Abonnenten veröffentlichen
  • Nachricht löschen

Action: Nachricht verwerfen ACKNOWLEDGEMENT
<----------
 

 

Wenn der Client keine ACKNOWLEDGMENT-Nachricht empfängt (entweder innerhalb eines in der Anwendung definierten Zeitraums oder wenn ein Fehler erkannt wird und die Kommunikationssitzung neu gestartet wird), kann der Client die PUBLISH-Nachricht erneut senden.

 

Level 2

Zusätzliche Protokoll-Flows oberhalb von QoS-Level 1 stellen sicher, dass keine doppelten Nachrichten an die empfangende Anwendung zugestellt werden. Dies ist die höchste Zustellungsebene, zur Verwendung, wenn doppelte Nachrichten nicht akzeptabel sind. Es gibt eine Zunahme des Netzwerkverkehrs, aber dies ist normalerweise aufgrund der Wichtigkeit des Nachrichteninhalts akzeptabel.

 

Eine Nachricht mit QoS-Level 2 hat eine Message ID in der Nachricht.

 

Die folgende Tabelle zeigt den QoS-Level-2-Protokollablauf. Es gibt zwei verfügbare Semantiken dafür, wie ein PUBLISH-Ablauf vom Empfänger verarbeitet werden soll.

 

Client Message and direction Server
QoS = 2
Message ID = x

Action: Nachricht speichern

PUBLISH
---------->
Aktion: Nachricht speichern
  PUBREC
<----------
Message ID = x
Message ID = x PUBREL
---------->
Actions:
  • Veröffentlicht eine Nachricht an Abonnenten
  • Löscht die Nachricht
Action: Nachricht verwerfen ACKNOWLEDGEMENT
<----------
Message ID = x

 

Wenn ein Fehler erkannt wird oder nach einem definierten Zeitraum, wird der Protokollablauf ab der letzten unbestätigten Protokollnachricht erneut versucht. Die zusätzlichen Protokollabläufe stellen sicher, dass die Nachricht genau einmal an die Abonnenten zugestellt wird.