ApsaraMQ for MQTT は、Message Queuing Telemetry Transport(MQTT)5.0 で最適化されたデバイスとクラウドのインタラクションをサポートしています。このトピックでは、最適化されたデバイスとクラウドのインタラクションについて説明します。
機能の説明
MQTT 5.0 では、リクエストレスポンスパターン、サブスクリプションオプション、改善されたエラーレポートなど、複数の機能が導入され、クライアントとサーバー(クラウド)間のインタラクションが最適化されています。これらの機能は、通信の柔軟性、信頼性、永続性を向上させ、デバイスとクラウドのシナリオに対してより効果的なソリューションを提供するように設計されています。
シナリオ
リクエストレスポンスインタラクション: クライアントでリクエストを開始してサーバーのデータをクエリしたり、サーバーで操作を実行したりし、サーバーからレスポンスを受信できます。この機能は、従来の HTTP リクエストレスポンスパターンと同様の方法で動作します。
サービス品質(QoS)管理: サブスクリプションオプションを使用して、クライアントの最大 QoS レベルを指定し、サービス品質を確保するために保持メッセージを受信するかどうかを指定できます。
ステータスの同期: メッセージ保持機能とセッション有効期限機能は、クライアントが再接続された後のセッションステータスの回復に役立ちます。これにより、通信の永続性が向上します。
接続インタラクション
接続インタラクションにより、デバイスとサーバー間のネゴシエーションが可能になります。クライアントがサーバーとの接続を確立すると、クライアントに関する設定情報がサーバーに送信され、接続が成功したかどうかが確認されます。接続が成功した場合、サーバーは設定項目の最終値を返します。
パラメーター | 説明 | サーバーから返される値 |
Wildcard Subscription Available |
| 1 |
Subscription Identifiers Available |
| 1 |
Topic Alias |
| 1 |
Maximum QoS |
| 2 |
Server Keep Alive | サーバーは、キープアライブ期間中にハートビートパケットまたはデータパケットの送信を続けます。そうでない場合、接続は中断されます。このパラメーターは、キープアライブ期間を指定します。 有効な値: 1 ~ 8。 単位: 分。 | デバイスが接続パラメーターで指定した保持期間が返されます。 戻り値が 8 分を超える場合は、8 分が使用されます。 |
Session Expiry Interval | 接続が中断された後のセッションの保持期間。 有効な値: 0 ~ 2147483647。 単位: 秒。 | デバイスが接続パラメーターで指定した保持期間が返されます。 このパラメーターが設定されていない場合は、デフォルト値 0 が返されます。値 0 は、接続が中断された直後にセッションが期限切れになることを示します。このパラメーターが設定されている場合は、10 分を示す値が返されます。値が 10 分未満の場合は、10 分が使用されます。 |
Maximum Packet Size | 有効な値: 0 ~ 128。 単位: KB。 説明
| 固定値 131072 が返されます。この値は 128 KB を示します。 |
Topic Alias Maximum | 有効な値: 0 ~ 30。 |
|
Receive Maximum
Receive Maximum プロパティが MQTT 5.0 に追加されました。このプロパティは、CONNECT パケットと CONNACK パケットで使用できます。Receive Maximum プロパティを使用すると、クライアントまたはサーバーが同時に処理できる QoS 1 または 2 のメッセージの最大数を指定できます。このプロパティの最大値は 65535 です。指定された値が最大値を超える場合は、65535 が使用されます。
Receive Maximum プロパティを使用して、ピアクライアントまたはサーバーが送信できる QoS 1 または 2 のメッセージの最大数を制限できます。ピアクライアントまたはサーバーの未公開メッセージの数が Receive Maximum プロパティの指定値と等しい場合、QoS が 1 または 2 のメッセージは送信できなくなります。これは、トラフィック調整の実装に役立ちます。
アクティブサーバー切断
MQTT 5.0 では、サーバーはデバイスへの接続を閉じて、デバイスに DISCONNECT パケットを送信できます。DISCONNECT パケットには、エラーコードと、接続が閉じられた理由を説明する文字列が含まれています。DISCONNECT パケットはトラブルシューティングを簡素化します。
一般的なエラーコード
10 進数 | 16 進数 | 名前 | パケットタイプ |
0 | 0x00 | 成功 | CONNACK、PUBACK、PUBREC、PUBREL、PUBCOMP、UNSUBACK、AUTH |
0 | 0x00 | 正常な切断 | DISCONNECT |
0 | 0x00 | QoS 0 を許可 | SUBACK |
1 | 0x01 | QoS 1 を許可 | SUBACK |
2 | 0x02 | QoS 2 を許可 | SUBACK |
4 | 0x04 | Will メッセージで切断 | DISCONNECT |
17 | 0x11 | サブスクリプションが存在しません | UNSUBACK |
128 | 0x80 | 不特定のエラー | CONNACK、PUBACK、PUBREC、SUBACK、UNSUBACK、DISCONNECT |
129 | 0x81 | 不正な形式のパケット | CONNACK、DISCONNECT |
130 | 0x82 | プロトコルエラー | CONNACK、DISCONNECT |
131 | 0x83 | 実装固有のエラー | CONNACK、PUBACK、PUBREC、SUBACK、UNSUBACK、DISCONNECT |
132 | 0x84 | サポートされていないプロトコルバージョン | CONNACK |
133 | 0x85 | クライアント ID が無効です | CONNACK |
134 | 0x86 | ユーザー名またはパスワードが無効です | CONNACK |
135 | 0x87 | 承認されていません | CONNACK、PUBACK、PUBREC、SUBACK、UNSUBACK、DISCONNECT |
136 | 0x88 | サーバーが利用できません | CONNACK |
137 | 0x89 | サーバーがビジー状態です | CONNACK、DISCONNECT |
138 | 0x8A | 禁止されています | CONNACK |
140 | 0x8C | 認証方法が無効です | CONNACK、DISCONNECT |
141 | 0x8D | キープアライブタイムアウト | DISCONNECT |
142 | 0x8E | セッションが引き継がれました | DISCONNECT |
143 | 0x8F | トピックフィルターが無効です | SUBACK、UNSUBACK、DISCONNECT |
144 | 0x90 | トピック名が無効です | CONNACK、PUBACK、PUBREC、DISCONNECT |
145 | 0x91 | パケット ID が使用中です | PUBACK、PUBREC、SUBACK、UNSUBACK |
146 | 0x92 | パケット ID が見つかりません | PUBREL、PUBCOMP |
147 | 0x93 | Receive Maximum を超えました | DISCONNECT |
148 | 0x94 | トピックエイリアスが無効です | DISCONNECT |
149 | 0x95 | パケットが大きすぎます | CONNACK、DISCONNECT |
150 | 0x96 | メッセージレートが高すぎます | DISCONNECT |
151 | 0x97 | クォータを超えました | CONNACK、PUBACK、PUBREC、SUBACK、DISCONNECT |
153 | 0x99 | ペイロード形式が無効です | CONNACK、PUBACK、PUBREC、DISCONNECT |
154 | 0x9A | Retain はサポートされていません | CONNACK、DISCONNECT |
155 | 0x9B | QoS はサポートされていません | CONNACK、DISCONNECT |
158 | 0x9E | 共有サブスクリプションはサポートされていません | SUBACK、DISCONNECT |
159 | 0x9F | 接続レートを超えました | CONNACK、DISCONNECT |
160 | 0xA0 | 最大接続時間 | DISCONNECT |
161 | 0xA1 | サブスクリプション ID はサポートされていません | SUBACK、DISCONNECT |
162 | 0xA2 | ワイルドカードサブスクリプションはサポートされていません | SUBACK、DISCONNECT |