AWS IoT
開発者ガイド

MQTT

MQTT は、制約のあるデバイス用に設計され、広く採用されている軽量なメッセージングプロトコルです。詳細については、「MQTT」を参照してください。AWS IoT メッセージブローカーでは、Quality of Service (QoS) レベル 0 および 1 がサポートされています。

AWS IoT メッセージブローカーの実装は MQTT バージョン 3.1.1 に基づいていますが、以下の点は仕様から逸脱しています。

  • AWS IoT では、QoS 0 でトピックにサブスクライブすると、メッセージが 0 回以上配信されます。メッセージは複数回配信される場合があります。複数回配信されるメッセージは、異なるパケット ID を使用して送信される場合があります。これらの場合、DUP フラグは設定されません。

  • AWS IoT では、QoS 2 でのパブリッシュとサブスクライブはサポートされていません。QoS 2 がリクエストされると、AWS IoT メッセージブローカーは PUBACK または SUBACK を送信しません。

  • 接続リクエストに応答するとき、メッセージブローカーは CONNACK メッセージを送信します。このメッセージには、接続で前のセッションを再開するかどうかを示すフラグが含まれます。

  • クライアントがトピックにサブスクライブすると、メッセージブローカーは SUBACK を送信してから、クライアントが新しい一致するメッセージの受信を開始するまでに、遅延が生じる場合があります。

  • MQTT の仕様では、ブローカーがトピックに送信された最後のメッセージを保持して以後のすべてのトピックサブスクライバーに送信することをリクエストするように、パブリッシャーをプロビジョニングします。AWS IoT では、メッセージの保持はサポートされていません。ブローカーがメッセージを保持するようにリクエストされた場合、接続は切断されます。

  • メッセージブローカーは、クライアント ID を使用して、各クライアントを識別します。クライアント ID は MQTT ペイロードの一部としてクライアントからメッセージブローカーに渡されます。クライアント ID が同じ 2 つのクライアントがメッセージブローカーに同時に接続することはできません。あるクライアントが別のクライアントのクライアント ID を使用してメッセージブローカーに接続すると、新しいクライアント接続が受け入れられ、以前に接続されたクライアントは切断されます。

  • まれに、メッセージブローカーは、パケット ID が異なる同じ論理 PUBLISH メッセージを再送信する場合があります。

  • メッセージブローカーはメッセージと ACK の正しい受信順序を確保するわけではありません。