Menu

Messaggi conservati (Capitolo 4)

30 Settembre 2021
Nessun Commento

I messaggi conservati sono una delle caratteristiche del protocollo che può essere estremamente importante quando si progettano sistemi che hanno bisogno di essere sempre aggiornati sulle informazioni contenute in ambienti specifici. Questo assicura che i nuovi sottoscritti ricevano immediatamente l’ultimo messaggio pubblicato circa un dato argomento.

Il protocollo MQTT è diventato un metodo sempre più popolare per stabilire la comunicazione tra dispositivi connessi alla rete. Il suo metodo publish / subscribe di trasferimento delle informazioni è più adatto alle esigenze dell’automazione industriale e delle implementazioni dell’Internet of Things (IoT) rispetto ai protocolli utilizzati. Le caratteristiche e le funzionalità disponibili dell’MQTT lo rendono un’eccellente scelta quando si deve lavorare con reti ad alta latenza, inaffidabili e a bassa larghezza di banda.

Cosa sono i Messaggi Conservati nell’MQTT?

La capacità di lavorare con messaggi conservati è un’importante caratteristica che non è presente negli altri protocolli di comunicazione. Nel metodo di comunicazione publish / subscribe, i client pubblicano messaggi su un dato argomento che vengono poi consegnati ad un broker. Da quel punto in poi il client che pubblica non ha più alcun controllo sulla consegna del messaggio. Il publisher non sa nemmeno se il messaggio viene consegnato. Il broker è responsabile della consegna dei messaggi ai client sottoscritti.

I client possono impostare il flag retained su vero quando pubblicano un messaggio per creare un messaggio conservato. A causa della natura arbitraria dei client publisher, un sottoscritto non ha modo di determinare quando saranno generati i messaggi su uno qualsiasi degli argomenti a cui è iscritto.
I sottoscritti probabilmente devono aspettare un periodo di tempo sostanziale prima che venga pubblicato un nuovo messaggio su uno specifico argomento. I nuovi client non sono al corrente dello stato di un argomento fino a che non ricevono un messaggio pubblicato.

Questo pone un problema quando un nuovo sottoscritto ha bisogno di ottenere informazioni sullo stato prima di eseguire una funzione critica. I messaggi conservati rendono possibile, per i dispositivi che sono online e si iscrivono all’argomento, di ricevere immediatamente un messaggio che contiene l’ultimo valore buono conosciuto dell’argomento. Il messaggio ricevuto da un nuovo sottoscritto potrebbe non essere l’ultimo messaggio inviato su un argomento, ma sarà l’ultimo messaggio che ha il flag retained impostato dal publisher.

Come funzionano?

Il messaggio broker MQTT è responsabile dell’inoltro dei messaggi ai client che hanno sottoscritto un particolare argomento. Un messaggio normale viene scartato dal broker se non ci sono sottoscrittori dell’argomento. Impostare il flag di messaggio conservato assicura che l’ultimo messaggio su un dato argomento sia disponibile quando un cliente si iscrive ad un argomento. Dal punto di vista del publisher, l’utilizzo di un messaggio conservato permette di assicurarsi che i client nuovi o ricollegati ricevano gli ultimi aggiornamenti di stato riguardanti un certo argomento.

Qualsiasi messaggio può essere designato dal publisher per essere conservato, ma i broker memorizzeranno solo un messaggio per argomento. Un nuovo messaggio conservato pubblicato su un certo argomento sostituirà il messaggio attualmente conservato. I messaggi conservati non scadono e sono conservati dal broker fino alla consegna o alla cancellazione da parte dell’editore (publisher). Il broker memorizza i messaggi conservati in un database e quindi deve avere sufficiente spazio di archiviazione disponibile. I client che si sottoscrivono agli argomenti usando i caratteri jolly riceveranno tutti i messaggi conservati che corrispondono alla richiesta di sottoscrizione.

Un nuovo messaggio conservato, pubblicato su un argomento, essenzialmente sovrascrive il precedente. Questo significa che spesso non c’è bisogno di cancellare un messaggio conservato. Si deve solo pubblicare un nuovo messaggio conservato sullo stesso argomento per aggiornare le informazioni rese disponibili ai sottoscritti. L’eliminazione è possibile inviando un messaggio conservato sull’argomento specificato con un carico utile di zero byte. Questo fa in modo che il broker elimini il messaggio conservato che sarebbe stato consegnato ai nuovi sottoscritti.

Torna su