すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:リクエストレスポンスパターン

最終更新日:Apr 09, 2025

このトピックでは、IoT Platform がサポートする Message Queuing Telemetry Transport(MQTT)5.0 のリクエストレスポンスパターンについて説明します。

背景情報

MQTT のパブリッシュ/サブスクライブパターンでは、メッセージは非同期的に公開および受信され、パブリッシャーとサブスクライバーは分離されています。IoT デバイスの実際のビジネスシナリオの中には、サブスクライバーからの応答が必要なものがあります。このような場合は、リクエストレスポンスパターンを使用できます。たとえば、サーバーがデバイスの電源をオンまたはオフにするコマンドを送信したり、デバイスがサーバーにデータのリクエストを送信したりする場合などです。

機能説明

MQTT 5.0 のリクエストレスポンスパターンは、HTTP リクエストレスポンスパターンとは異なり、非同期の要求メッセージと応答メッセージを使用します。応答メッセージをリクエストメッセージに関連付けるために、リクエストメッセージには Response Topic と Correlation Data が追加されます。これにより、レスポンダー側の開発が簡素化されます。

  • Response Topic: レスポンダーが応答メッセージを公開する Topic を指定する文字列です。

  • Correlation Data: リクエストのコンテキストを格納するバイナリデータです。レスポンダーはこのデータを使用して、リクエストメッセージを識別できます。

次の図は、リクエストレスポンスパターンを使用した場合のメッセージングプロセスを示しています。

image..png

重要
  • デバイスに同時に複数のリクエストを送信する場合、各リクエストメッセージの Correlation Data にリクエスト ID を含めることができます。これにより、レスポンダーはリクエストを識別できます。

  • IoT Platform は、revert-remote procedure call(RRPC)通信をサポートしています。リモートデバイスをリアルタイムで制御する場合は、RRPC を使用して応答を同期的に取得できます。

  • QoS 1 メッセージは IoT Platform によって受信される必要があります。サブスクライバーがメッセージを受信し、メッセージで必要な操作を完了できるようにするには、リクエストレスポンスパターンの使用をお勧めします。

シナリオ

デバイスがサーバーにデータをリクエストする

シナリオによっては、IoT デバイスがサーバーにデータをリクエストする必要があります。たとえば、スマート調理機器がクラウドからさまざまなレシピをリクエストし、さまざまな種類のレシピが別々の Topic に保存されているとします。リクエストレスポンスパターンを使用すると、サーバーは Topic を区別することなく、レシピで応答するだけで済みます。これにより、サーバー側の開発が簡素化されます。

  • デバイスは、リモートコントロールのシナリオと同様に、Correlation Data を使用してリクエストメッセージと応答メッセージを関連付けることができます。

  • サーバーは、デバイスによってリクエストされたデータのみで応答し、応答メッセージが属する Topic を識別しません。

image..png

サーバーがリモートデバイスを制御する

サーバーがリモートデバイスにコマンドを送信する場合、サーバーはすぐに応答を受信することを期待します。たとえば、サーバーが電子錠のロックを解除するコマンドを送信するとします。このシナリオでは、リクエストレスポンスパターンを使用でき、デバイス ID 情報を Correlation Data に含めてデバイスを認証できます。

image..png