MQTTを使用すると、送信者はサービスの品質(QoS)レベルを設定できます。これにより、メッセージが受信されるかどうか(および重複が許可されるかどうか)に関する特定の保証が提供されます。HiveMQからのこの記事では、QoSレベルが低いクライアントが、送信者が要求した保証を備えたメッセージを受信しないというダウングレードの問題を強調しています。
すでに述べたように、パブリッシングクライアントとサブスクライブクライアント間のQoSフローは2つの異なるものであり、QoSも異なる場合があります。つまり、QoSレベルは、メッセージをパブリッシュするクライアントA、およびパブリッシュされたメッセージを受信するクライアントBとは異なる可能性があります。送信者とブローカーの間で、QoSは送信者によって定義されます。ブローカーがすべてのサブスクライバーにメッセージを送信すると、クライアントBからのサブスクリプションのQoSが使用されます。
MQTTは、このダウングレードが受け入れられないこと、およびメッセージが元の送信者の要求されたQoSを使用して配信される必要があることを示す方法を提供しますか?メッセージを送信する前に、送信者と受信者の両方に必要なQoS設定があることを確認する唯一のオプションはありますか?