Quality Of Service

Obsługiwane przez

 

TsgcWSPServer_sgc

TsgcWSPClient_sgc

TsgcWSPClient_MQTT

JavaScript

 

 

SGC Default Protocol i MQTT implementują QoS (Quality of Service) dla dostarczania wiadomości. Istnieją 3 różne typy:

 

Poziom 0: „Co najwyżej raz", gdzie wiadomości są dostarczane zgodnie z najlepszymi możliwościami sieci TCP/IP. Możliwa jest utrata lub duplikacja wiadomości. Poziom ten może być stosowany na przykład w przypadku danych z czujników otoczenia, gdzie pominięcie pojedynczego odczytu nie ma znaczenia, ponieważ kolejny zostanie opublikowany wkrótce potem.

 

Poziom 1: „Co najmniej raz" — wiadomości są gwarantowanie dostarczane, jednak mogą wystąpić duplikaty.

 

Poziom 2: „Dokładnie raz", gdzie wiadomości mają zagwarantowane dotarcie dokładnie jeden raz. Tego poziomu można używać na przykład w systemach rozliczeniowych, gdzie zduplikowane lub utracone wiadomości mogłyby prowadzić do naliczenia nieprawidłowych opłat.

 

 

Poziom 0

Wiadomość jest dostarczana zgodnie z najlepszymi możliwościami sieci TCP/IP. Odpowiedź nie jest oczekiwana i protokół nie definiuje semantyki ponawiania. Wiadomość dociera do serwera raz lub wcale.

 

Poniższa tabela przedstawia przepływ protokołu dla poziomu QoS 0.

 

Klient Wiadomość i kierunek Serwer
QoS = 0 PUBLISH
---------->
Akcja: Publikowanie wiadomości do subskrybentów

Poziom 1

Odebranie wiadomości przez serwer jest potwierdzane wiadomością ACKNOWLEDGEMENT. W przypadku zidentyfikowanej awarii łącza komunikacyjnego lub urządzenia nadającego albo gdy wiadomość potwierdzająca nie zostanie odebrana po określonym czasie, nadawca ponownie wysyła wiadomość. Wiadomość dociera do serwera co najmniej raz.

 

Wiadomość z poziomem QoS 1 ma w wiadomości identyfikator.

 

Poniższa tabela przedstawia przepływ protokołu QoS poziomu 1.

 

Klient Wiadomość i kierunek Serwer
QoS = 1
Message ID = x

Action: Przechowaj wiadomość

PUBLISH
---------->
Akcje:
  • Zapisz wiadomość

  • Opublikuj wiadomość do subskrybentów
  • Usuń wiadomość

Akcja: Odrzuć wiadomość POTWIERDZENIE
<----------
 

 

Jeśli klient nie otrzyma komunikatu ACKNOWLEDGMENT (w czasie zdefiniowanym w aplikacji lub po wykryciu awarii i ponownym uruchomieniu sesji komunikacyjnej), może ponownie wysłać wiadomość PUBLISH.

 

Poziom 2

Dodatkowe przepływy protokołu powyżej poziomu QoS 1 zapewniają, że zduplikowane wiadomości nie są dostarczane do aplikacji odbierającej. Jest to najwyższy poziom dostarczania, stosowany gdy zduplikowane wiadomości są niedopuszczalne. Wiąże się to ze wzrostem ruchu sieciowego, który jest jednak zazwyczaj akceptowalny ze względu na wagę treści wiadomości.

 

Wiadomość z poziomem QoS 2 posiada identyfikator Message ID w treści wiadomości.

 

Poniższa tabela przedstawia przepływ protokołu MQTT QoS poziomu 2. Dla sposobu obsługi przepływu PUBLISH przez odbiorcę dostępne są dwie semantyki.

 

Klient Wiadomość i kierunek Serwer
QoS = 2
Message ID = x

Action: Przechowaj wiadomość

PUBLISH
---------->
Akcja: Przechowaj wiadomość
  PUBREC
<----------
Identyfikator wiadomości = x
Identyfikator wiadomości = x PUBREL
---------->
Akcje:
  • Opublikuj wiadomość subskrybentom
  • Usuń wiadomość
Akcja: Odrzuć wiadomość POTWIERDZENIE
<----------
Identyfikator wiadomości = x

 

W przypadku wykrycia błędu lub po upływie zdefiniowanego okresu, przepływ protokołu jest ponawiany od ostatniej niepotwierdzanej wiadomości protokołu. Dodatkowe przepływy protokołu zapewniają, że wiadomość jest dostarczana do subskrybentów dokładnie raz.