MQTT (Message Queuing Telemetry Transport) プロトコルは、パブリッシュ / サブスクライブベースの非同期的な通信方法を利用していますので、サーバーが同期的にリクエストをデバイスに送信し、デバイスから応答を受信する必要があるシナリオには適していません。 この問題に対応して、IoT Platform は MQTT プロトコルを修正する必要がなく、同期的なリクエストとレスポンス通信を可能にします。 そのために、サーバーは IoT Platform API を呼び出します。

用語集

  • RRPC: 同期的なリモートプロセス呼び出し。
  • RRPC リクエストメッセージ: クラウドからデバイスに送信されるメッセージ。
  • RRPC 応答メッセージ: デバイスからクラウドに送信される応答メッセージ。
  • RRPC メッセージ ID: RRPC リクエストごとに、IoT Platform によって生成される一意のメッセージ ID。
  • RRPC サブスクリプショントピック: デバイスが、RRPC メッセージに関してサブスクライブするトピック。 トピックにはワイルドカード (+) が含まれています。

RRPC を利用したメッセージ通信

  1. IoT Platform がサーバーからの API 呼び出しを受け取った際、RRPC リクエストメッセージをデバイスへ送信します。 メッセージ本体は任意の入力データであり、トピックは IoT Platform によって定義された、一意の RRPC メッセージ ID が含まれています。
  2. デバイスはリクエストメッセージを受信した後、定義されたトピックフォーマットに従って、RRPC メッセージ ID を含む RRPC 応答メッセージを返信します。 IoT Platform は、トピックからメッセージ ID を抽出し、その ID をリクエストの ID と照合してから、応答をサーバーへ送信します。
  3. 呼び出しの実行時にデバイスがオフラインであった場合、IoT Platform はデバイスがオフラインであることを示す、エラーメッセージを返信します。 デバイスがタイムアウト時間内に応答メッセージを送信しなかった場合、IoT Platform はタイムアウトエラーをサーバーへ返信します。

トピックの形式

トピックは、メソッドごとに異なる形式で実装されています。