MQTT consente ai mittenti di impostare un livello di qualità del servizio (QoS), che fornisce determinate garanzie sulla ricezione di un messaggio (e se i duplicati sono consentiti). Questo articolo di HiveMQ evidenzia il problema del downgrade , in cui un client con un livello di QoS inferiore non riceverà il messaggio con le garanzie che il mittente ha richiesto:
Come già detto, i flussi di QoS tra un client di pubblicazione e di sottoscrizione sono due cose diverse, così come il QoS può essere diverso. Ciò significa che il livello QoS può essere diverso dal client A, che pubblica un messaggio, e dal client B, che riceve il messaggio pubblicato. Tra il mittente e il broker il QoS è definito dal mittente. Quando il broker invia il messaggio a tutti gli abbonati, viene utilizzato il QoS dell'abbonamento dal client B.
MQTT fornisce un modo per indicare che questo downgrade non è accettabile e che il messaggio deve essere recapitato utilizzando il QoS richiesto dal mittente originale? È l'unica opzione per assicurarsi che sia il mittente che il destinatario dispongano dell'impostazione QoS desiderata prima di trasmettere il messaggio?