MQTT permet aux expéditeurs de définir un niveau de qualité de service (QoS), qui fournit certaines garanties quant à la réception d'un message (et si les doublons sont autorisés). Cet article de HiveMQ met en évidence le problème de la rétrogradation , où un client avec un niveau de QoS inférieur ne recevra pas le message avec les garanties que l'expéditeur a demandé:
Comme déjà dit, les flux de QoS entre un client de publication et d'abonnement sont deux choses différentes et la QoS peut être différente. Cela signifie que le niveau de QoS peut être différent du client A, qui publie un message, et du client B, qui reçoit le message publié. Entre l'expéditeur et le courtier, la qualité de service est définie par l'expéditeur. Lorsque le courtier envoie le message à tous les abonnés, la QoS de l'abonnement du client B est utilisée.
MQTT fournit-il un moyen d'indiquer que cette rétrogradation n'est pas acceptable et que le message doit être remis en utilisant la qualité de service demandée par l'expéditeur d'origine? La seule option est-elle de s'assurer que l'expéditeur et le destinataire ont le paramètre de qualité de service souhaité avant de transmettre le message?