Destekleyen
Java script
SGC Default Protocol ve MQTT, mesaj teslimatı için QoS (Quality of Service) uygular. 3 farklı tür vardır:
Level 0: "En fazla bir kez", mesajların temel TCP/IP ağının en iyi çabasına göre teslim edildiği yer. Mesaj kaybı veya çoğaltma oluşabilir. Bu seviye örneğin, bir bireysel okumanın kaybolmasının önemli olmadığı ortam sensörü verileriyle kullanılabilir, çünkü bir sonraki kısa süre sonra yayınlanacaktır.
Level 1: "En az bir kez", mesajların ulaşacağı garanti edilir ancak çoğaltmalar (duplicates) oluşabilir.
Seviye 2: "Tam olarak bir kez", mesajların tam olarak bir kez ulaşacağı garanti edilir. Bu seviye, örneğin yinelenen veya kaybolan mesajların yanlış ücretlerin uygulanmasına yol açabileceği faturalandırma sistemlerinde kullanılabilir.
Mesaj, temel TCP/IP ağının en iyi çabasına göre teslim edilir. Bir yanıt beklenmez ve protokolde yeniden deneme semantiği tanımlanmaz. Mesaj sunucuya ya bir kez ulaşır ya da hiç ulaşmaz.
Aşağıdaki tablo QoS seviye 0 protokol akışını gösterir.
| Client | Mesaj ve yön | Server |
|---|---|---|
| QoS = 0 | PUBLISH ----------> |
Action: Abonelere bir mesaj yayınla |
Bir mesajın sunucu tarafından alınması bir ACKNOWLEDGEMENT mesajı ile onaylanır. Ya iletişim bağlantısında ya da gönderen cihazda tanımlanmış bir arıza varsa veya onaylama mesajı belirli bir süre sonra alınmazsa, gönderen mesajı yeniden gönderir. Mesaj, sunucuya en az bir kez ulaşır.
QoS düzey 1 olan bir mesajın mesajda bir Message ID'si vardır.
Aşağıdaki tablo, QoS level 1 protokol akışını gösterir.
| Client | Mesaj ve yön | Server |
|---|---|---|
| QoS
= 1 Message ID = x Action: Mesajı sakla |
PUBLISH ----------> |
Actions:
|
| Action: Mesajı at | ACKNOWLEDGEMENT<---------- |
İstemci bir ACKNOWLEDGMENT mesajı almazsa (ya uygulamada tanımlanan bir zaman süresi içinde ya da bir hata algılanırsa veya iletişim oturumu yeniden başlatılırsa), istemci PUBLISH mesajını yeniden gönderebilir.
QoS düzeyi 1'in üzerindeki ek protokol akışları, yinelenen mesajların alıcı uygulamaya teslim edilmemesini sağlar. Bu, yinelenen mesajların kabul edilemez olduğu durumlarda kullanım için en yüksek teslim düzeyidir. Ağ trafiğinde bir artış vardır, ancak mesaj içeriğinin önemi nedeniyle bu genellikle kabul edilebilir.
QoS seviyesi 2 olan bir mesajın, mesajda bir Message ID'si vardır.
Aşağıdaki tablo, QoS level 2 protokol akışını gösterir. Bir PUBLISH akışının alıcı tarafından nasıl işlenmesi gerektiğine dair iki semantik mevcuttur.
| Client | Mesaj ve yön | Server |
|---|---|---|
| QoS
= 2 Message ID = x Action: Mesajı sakla |
PUBLISH ----------> |
Action: Mesajı sakla |
PUBREC <---------- |
Mesaj ID = x | |
| Mesaj ID = x |
PUBREL ----------> |
Actions:
|
| Action: Mesajı at | ACKNOWLEDGEMENT <---------- |
Mesaj ID = x |
Bir hata algılanırsa veya tanımlanmış bir süreden sonra, protokol akışı son onaylanmamış protokol mesajından yeniden denenir. Ek protokol akışları, mesajın abonelere tam olarak bir kez teslim edilmesini sağlar.