PUBLISH - Messaggio di pubblicazione

Un messaggio PUBLISH è inviato da un client ad un broker per la distribuzione ai sottoscrittori interessati. Ogni messaggio PUBLISH è associato ad un nome di argomento (noto anche come Soggetto o Canale). Questo è uno spazio dei nomi gerarchico che definisce una tassonomia di origini informazioni per cui i sottoscrittori possono manifestare un interesse. Un messaggio che è pubblicato in un nome di argomento specifico è consegnato ai sottoscrittori connessi per tale argomento.

Per mantenere la simmetria, se un client effettua la sottoscrizione ad uno o più argomenti, tutti i messaggi pubblicati in quegli argomenti vengono inviati dal broker al client come messaggio PUBLISH.

Intestazione fissa

La seguente tabella mostra il formato dell'intestazione fissa.

bit 7 6 5 4 3 2 1 0
byte 1 Tipo messaggio (3) Indicatore DUP Livello QoS RETAIN
  0 0 1 1 0 0 1 0
byte 2 Lunghezza rimanente
Livello QoS
Impostato su 1.
Indicatore DUP
Impostato su zero (0). Questo significa che il messaggio è inviato per la prima volta.

Per i messaggi con QoS livello 1 o livello 2 che sono inviati di nuovo poiché è stato rilevato un errore, il bit DUP è impostato su 1. Questo indica al broker che il messaggio potrebbe essere il duplicato di un messaggio che è già stato ricevuto. Il significato di queste informazioni per il broker dipende dal livello QoS. Il bit DUP non è utilizzato per messaggi con QoS livello 0.

Indicatore RETAIN
Impostato su zero. Questo significa non conservare.
Campo Lunghezza rimanente
La lunghezza dell'intestazione variabile più la lunghezza del payload. Può essere un campo a più byte.

Intestazione variabile

L'intestazione variabile contiene i seguenti campi:

Nome argomento
Una stringa codificata UTF.
ID messaggio
Presente per messaggi con QoS livello 1 e QoS livello 2.

In genere, è la libreria del protocollo che genera l'ID messaggio e lo ritrasmette all'applicazione di pubblicazione, possibilmente come handle di ritorno. Tale approccio elimina il rischio che più applicazioni o thread di pubblicazione, in esecuzione su un singolo client generino ID messaggio duplicati.

Non è possibile utilizzare l'ID messaggio nell'intestazione variabile per i messaggi con QoS livello 0.

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. L'ordine dei 2 byte dell'identificativo del messaggio è MSB, poi LSB (big-endian).

L'ID messaggio 0 (cioè, 0x0000) è riservato come ID messaggio non valido e non può essere utilizzato.

La seguente tabella mostra un esempio di intestazione variabile per un messaggio PUBLISH.

Campo Valore
Nome argomento: "a/b"
Livello QoS 1
ID messaggio: 10

Il formato dell'intestazione variabile in questo caso è 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
Identificativo del messaggio
byte 6 MSB ID messaggio (0) 0 0 0 0 0 0 0 0
byte 7 LSB ID messaggio (10) 0 0 0 0 1 0 1 0

Payload

Contiene i dati per la pubblicazione. Il contenuto e il formato dei dati è specifico per l'applicazione. Il campo Lunghezza rimanente nell'intestazione fissa include sia la lunghezza dell'intestazione variabile sia la lunghezza del payload.

Risposta

La risposta ad un messaggio PUBLISH dipende dal livello QoS. La seguente tabella mostra le risposte previste.

Livello QoS Risposta prevista
QoS 0 Nessuna azione.
QoS 1 PUBACK
QoS 2 PUBREC

Azioni

I messaggi PUBLISH possono esser inviati da un autore (publisher) al broker o dal broker ad un sottoscrittore. L'azione del destinatario, quando riceve un messaggio, dipende dal livello QoS del messaggio:

QoS 0
Rendere il messaggio disponibile a tutte le parti interessate.
QoS 1
Registrare il messaggio nella memoria permanente, renderlo disponibile a tutte le parti interessate e restituire un messaggio PUBACK al mittente.
QoS 2
Registrare il messaggio nella memoria permanente, non renderlo ancora disponibile alle parti interessate e restituire un messaggio PUBREC al mittente.

Se il broker riceve il messaggio, per parti interessate si intendono i sottoscrittori all'argomento del messaggio PUBLISH. Se un sottoscrittore riceve il messaggio, per parti interessate si intende l'applicazione sul client che ha effettuato la sottoscrizione ad uno o più argomenti e che è in attesa di un messaggio dal broker.

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