SUBSCRIBE - Sottoscrizione agli argomenti definiti

Il messaggio SUBSCRIBE consente ad un client di specificare al broker un interesse per uno o più nomi argomento. I messaggi pubblicati in questi argomenti sono consegnati dal broker al client come messaggi PUBLISH. Il messaggio SUBSCRIBE specifica anche il livello QoS a cui il sottoscrittore desidera ricevere i messaggi pubblicati.

Intestazione fissa

La seguente tabella mostra il formato dell'intestazione fissa.

bit 7 6 5 4 3 2 1 0
byte 1 Tipo messaggio (8) Indicatore DUP Livello QoS RETAIN
  1 0 0 0 0 0 1 x
byte 2 Lunghezza rimanente
Livello QoS
I messaggi SUBSCRIBE utilizzano QoS livello 1 per confermare più richieste di sottoscrizione. Il messaggio SUBACK corrispondente è identificato tramite la corrispondenza dell'ID messaggio. In questo modo si gestiscono anche le ripetizioni dei messaggi SUBSCRIBE allo stesso modo dei messaggi PUBLISH.
Indicatore DUP
In questo esempio l'indicatore DUP è impostato su zero (0) per indicare che il messaggio è stato inviato per la prima volta. Se questo messaggio viene nuovamente inviato perché un messaggio SUBACK non è arrivato entro un periodo di timeout specificato, il bit DUP viene impostato per indicare al broker che potrebbe essere un duplicato di un messaggio già ricevuto.
Indicatore RETAIN
Non utilizzato.
Campo Lunghezza rimanente
La lunghezza del payload. Può essere un campo a più byte.

Intestazione variabile

L'intestazione variabile contiene un ID messaggio perché un messaggio SUBSCRIBE ha un livello QoS pari a 1.

In genere, la libreria del protocollo genera l'ID messaggio e lo ritrasmette all'applicazione di pubblicazione, ad esempio come handle di ritorno. Questo impedisce che più applicazioni, più thread di pubblicazione, in esecuzione su un singolo client generino ID messaggio duplicati.

L'ID messaggio 0 (0x0000) è riservato come ID messaggio non valido e non può essere utilizzato. L'ID messaggio è un numero intero senza segno a 16-bit, che in genere aumenta esattamente di uno da un messaggio all'altro, ma non obbligatoriamente. I due byte dell'ID messaggio sono ordinati come MSB, seguito da LSB (big-endian).

La seguente tabella mostra un esempio di formato per l'intestazione variabile con un ID messaggio pari a 10.

  Descrizione 7 6 5 4 3 2 1 0
Identificativo del messaggio
byte 1 MSB ID messaggio (0) 0 0 0 0 0 0 0 0
byte 2 LSB ID messaggio (10) 0 0 0 0 1 0 1 0

Payload

Il payload di un messaggio SUBSCRIBE contiene un elenco di nomi argomento a cui il client desidera effettuare una sottoscrizione e il livello QoS a cui il client desidera ricevere i messaggi. Le stringhe sono codificate UTF e il livello QoS occupa 2 bit di un singolo byte. Tali coppie argomento/QoS sono compresse in modo contiguo come mostrato nell'esempio di payload nella tabella seguente.

Nome argomento "a/b"
QoS richiesto 1
Nome argomento "c/d"
QoS richiesto 2

I nomi argomento in un messaggio SUBSCRIBE non sono compressi.

Il formato del payload di esempio è mostrato nella tabella seguente.

  Descrizione 7 6 5 4 3 2 1 0
Nome argomento
byte 1 MSB della lunghezza (0) 0 0 0 0 0 0 0 0
byte 2 LSB della lunghezza (3) 0 0 0 0 0 0 1 1
byte 3 'a' (0x61) 0 1 1 0 0 0 0 1
byte 4 '/' (0x2F) 0 0 1 0 1 1 1 1
byte 5 'b' (0x62) 0 1 1 0 0 0 1 0
QoS richiesto
byte 6 QoS richiesto (1) x x x x x x 0 1
Nome argomento
byte 7 MSB della lunghezza (0) 0 0 0 0 0 0 0 0
byte 8 LSB della lunghezza (3) 0 0 0 0 0 0 1 1
byte 9 'c' (0x63) 0 1 1 0 0 0 1 1
byte 10 '/' (0x2F) 0 0 1 0 1 1 1 1
byte 11 'd' (0x64) 0 1 1 0 0 1 0 0
QoS richiesto
byte 12 QoS richiesto (2) x x x x x x 1 0

Ipotizzando che il livello QoS richiesto sia garantito, il client riceve messaggi PUBLISH ad un livello uguale o inferiore a questo, a seconda del livello QoS del messaggio originale dall'autore (publisher). Ad esempio, se un client ha una sottoscrizione QoS livello 1 ad un particolare argomento, un messaggio PUBLISH QoS livello 0 per tale argomento è consegnato al client ad un livello QoS 0. Un messaggio PUBLISH QoS livello 2 per lo stesso argomento è degradato ad un livello QoS 1 per la consegna al client.

Questo implica come corollario che la sottoscrizione ad un argomento al livello QoS 2 equivale a dire "Vorrei ricevere messaggi su questo argomento nel QoS in cui sono pubblicati".

Il campo QoS richiesto è codificato nel byte successivo ad ogni nome argomento codificato UTF come mostrato nella seguente tabella.

bit 7 6 5 4 3 2 1 0
  Riservato Riservato Riservato Riservato Riservato Riservato Livello QoS
  x x x x x x    

I 6 bit superiori di questo byte non sono utilizzati nella versione corrente del protocollo. Sono riservati ad un utilizzo futuro.

Risposta

Quando riceve un messaggio SUBSCRIBE da un client, il broker risponde con un messaggio SUBACK.

Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ac11010_