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

IoT Platform:サーバー側サブスクリプションによるデバイスメッセージのサブスクライブ

最終更新日:Jun 22, 2026

AMQP サーバー側サブスクリプションを設定することで、ご利用のサーバーが AMQP クライアントとして接続し、サンプル街灯デバイスからデータを受信できるようになります。

前提条件

デバイスが IoT Platform に接続され、データをレポートしている必要があります。詳細については、「デバイスを IoT Platform に接続してデータを送信する」をご参照ください。

開発環境の準備

このトピックのサンプル AMQP クライアントは Java で開発されています。Apache Qpid JMS クライアントの使用を推奨します。使用方法については、「Qpid JMS 0.57.0」をご参照ください。

このサンプルでは、以下の開発環境を使用します:

AMQP サーバー側サブスクリプションの設定

  1. IoT Platform コンソールで、[概要] タブの IoT Test Environment インスタンスをクリックします。

  2. ご利用のサーバーが転送されたメッセージを取得するために使用するコンシューマーグループを作成します。

    1. 左側のナビゲーションウィンドウで、[メッセージ転送] > [サーバー側サブスクリプション] を選択し、[コンシューマーグループ] タブをクリックします。

    2. [コンシューマーグループの作成] をクリックします。

    3. [コンシューマーグループの作成] ダイアログボックスで、コンシューマーグループ名を Thermostat Data Receiver に設定し、[OK] をクリックします。

      コンシューマーグループが作成されると、[コンシューマーグループ詳細] ページにリダイレクトされます。[コンシューマーグループ ID] を見つけ、[コピー] をクリックして コンシューマーグループ ID を保存します。この ID は、AMQP クライアントを接続する際に必要になります。

  3. Home Thermostat プロダクトのサーバー側サブスクリプションを設定します。これにより、ご利用のサーバーがこのプロダクト配下のデバイスから様々な種類のメッセージをサブスクライブできるようになります。

    1. 左側のナビゲーションウィンドウで、[メッセージ転送] > [サーバー側サブスクリプション] を選択します。

    2. [サーバー側サブスクリプション] ページの [サブスクリプション] タブで、[サブスクリプションの作成] をクリックします。

    3. [サブスクリプションの作成] ダイアログボックスで、パラメーターを設定し、[OK] をクリックします。

      パラメーター

      説明

      プロダクト

      Home Thermostat を選択します。

      サブスクリプションタイプ

      AMQP を選択します。

      コンシューマーグループ

      作成した Thermostat Data Receiver コンシューマーグループを選択します。

      メッセージタイプ

      デバイスアップストリーム通知履歴 TSL データの送信を選択します。メッセージタイプの詳細については、「AMQP サーバー側サブスクリプションの設定」をご参照ください。

    データ転送機能を使用して、データを AMQP サブスクリプションのコンシューマーグループに転送し、AMQP クライアントでメッセージを受信することもできます。例えば、処理済みの TSL データ送信コンテンツを、Thermostat Data Forwarding データ転送ルールから AMQP サブスクリプションの Thermostat Data Reception コンシューマーグループに転送できます。詳細については、「サーバー側 AMQP サブスクリプションのコンシューマーグループへのデータ転送」をご参照ください。

AMQP クライアント接続のサンプル

  1. デモパッケージをダウンロードして解凍します。

  2. IntelliJ IDEA を開き、パッケージから amqp-demo サンプルプロジェクトをインポートします。

    pom.xml ファイルには、Qpid JMS クライアントをダウンロードするために必要な Maven 依存関係がすでに含まれています。

  3. src/main/java/com.aliyun.iotx.demo ディレクトリにある AmqpClient.java ファイルで、JMS クライアントを IoT Platform に接続するためのパラメーターを変更します。詳細については、次の表をご参照ください。

        private static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        private static String accessSecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        private static String consumerGroupId = "1yRO*****************";
        // ご利用のインスタンスの ID。2021 年 7 月 30 日より前にアクティベートされたパブリックインスタンスを使用している場合は、このパラメーターを空のままにします。
        private static String iotInstanceId = "iot-cn-******";
        // クライアント ID。このパラメーターの値は、IoT Platform コンソールのコンシューマーグループのステータスページの [クライアント ID] 列に表示されます。
        // マシンの UUID、MAC アドレス、IP アドレスなどの一意の識別子をクライアント ID として使用し、異なるクライアントを簡単に区別できるようにすることを推奨します。
        private static String clientId = "test_IoT";
        // ご利用のインスタンスのエンドポイント。詳細については、AMQP クライアントの接続方法に関するドキュメントをご参照ください。
        private static String host = "iot-cn-******.amqp.iothub.aliyuncs.com";
        // 単一のプロセスによって確立される接続の数。
        // 単一接続の消費レートは制限されています。最大 128 の接続を作成できます。詳細については、「使用制限」をご参照ください。
        // 接続数は消費レートとリバランスに関連しています。消費レートが 500 QPS 増加するごとに接続を 1 つ追加することを推奨します。
        private static int connectionCount = 4;

    パラメーター

    説明

    accessKey

    IoT Platform コンソールにログインします。プロフィール画像にカーソルを合わせ、[AccessKey 管理] をクリックして、AccessKey ID と AccessKey Secret を取得します。

    重要

    AccessKey ペアをビジネスコードにハードコーディングすることによるセキュリティリスクを防ぐため、この例では環境変数を使用しています。

    ローカルのオペレーティングシステムに ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET という環境変数を作成し、それぞれの値を AccessKey ID と AccessKey Secret に設定する必要があります。

    accessSecret

    consumerGroupId

    作成した Thermostat Data Receiver コンシューマーグループの ID。このトピックの「AMQP サーバー側サブスクリプションの設定」セクションのステップ 2 をご参照ください。

    iotInstanceId

    ご利用の IoT Test Environment インスタンスの ID。インスタンス ID は、IoT Platform コンソールの [概要] ページで確認できます。

    clientId

    クライアント ID。この ID を定義する必要があります。ID は最大 64 文字です。AMQP クライアントが配置されているサーバーの UUID、MAC アドレス、IP アドレスなど、一意の識別子を使用することを推奨します。

    AMQP クライアントが接続して起動した後、IoT Platform コンソールにログインします。インスタンスの [メッセージ転送] > > > [サーバー側サブスクリプション] ページの [コンシューマーグループ] タブで、コンシューマーグループの横にある [表示] をクリックします。[コンシューマーグループ詳細] ページにこのパラメーターが表示されます。これにより、異なるクライアントを識別しやすくなります。

    host

    ご利用のインスタンスの AMQP エンドポイント。詳細については、「Enterprise Edition インスタンスの作成」をご参照ください。

    エンドポイントは IoT Platform コンソールでも確認できます。ご利用の IoT Test Environment インスタンスの [インスタンス詳細] ページで、[開発構成の表示] をクリックし、[AMQP] タブをクリックします。

    connectionCount

    AMQP クライアントの接続数。最大値は 128 です。このパラメーターは、リアルタイムのメッセージプッシュをスケールアウトするために使用されます。

    [コンシューマーグループ詳細] ページでは、接続されたクライアントが ${clientId}+"-"+number のフォーマットで表示されます。number の最小値は 0 です。

  4. AmqpClient.java サンプルコードを実行します。以下のような出力は、AMQP クライアントが IoT Platform に接続し、メッセージを受信していることを示します。

    説明

    デモコードには Thread.sleep(60 * 1000); コードスニペットが含まれており、プログラムは開始から 1 分後に終了します。実際のアプリケーションでは、ビジネス要件に基づいて実行時間を設定してください。

    [main] INFO com.aliyun.iotx.demo.AmqpClient - amqp demo is started successfully, and will exit after 60s
    [AmqpProvider :(2):[amqps://xxx.aliyuncs.com:5671]] DEBUG org.apache.qpid.jms.provider.amqp.AmqpConsumer - Dispatching received message: JmsInboundMessageDispatch { sequence
    [JmsSession [ID:d0cd8ff1-5c3xxx] xxx dispatcher] DEBUG org.apache.qpid.jms.provider.failover.FailoverProvider - Executing Failover Task: message acknowledge -> JmsInboundMessag...
    [AmqpProvider :(2):[amqps://xxx.aliyuncs.com:5671]] DEBUG org.apache.qpid.jms.provider.amqp.AmqpConsumer - Delivered Ack of message: JmsInboundMessageDispatch { sequence =
    [JmsSession [ID:d0cd8ff1-5c3xxx] xxx dispatcher] DEBUG org.apache.qpid.jms.provider.failover.FailoverProvider - Executing Failover Task: message acknowledge -> JmsInboundMessag...
    [AmqpProvider :(2):[amqps://xxx.aliyuncs.com:5671]] DEBUG org.apache.qpid.jms.provider.amqp.AmqpConsumer - Accepted Ack of message: JmsInboundMessageDispatch { sequence = 1
    [pool-1-thread-1] INFO com.aliyun.iotx.demo.AmqpClient - receive message,
     topic = /a1xxx/device1/thing/event/property/post,
     messageId = 1380044478987006465,
     content = {"deviceType":"CustomCategory","iotId":"nTT9rxxx","requestId":"1617863381153","checkFailedData":{},"productKey":"a10xxx","gmtCreate":1617863218430,"deviceName":"device1","items":{"LightSwitch":{"value":1,"time":1617863218430}}}}}}}}

    レスポンスパラメーター:

    パラメーター

    説明

    topic

    /***********/******/thing/event/property/post

    デバイスプロパティをレポートするために使用される Topic。

    messageId

    1324198300680719360

    メッセージの ID。

    content

    {"temperature":23,"humidity":21,"time":1604548451951}

    メッセージのペイロード。

    コードが正常に実行された後、コンシューマーグループの基本ステータスを表示できます。

    詳細については、「AMQP コンシューマーグループの管理」をご参照ください。

    コンシューマーグループのステータスには、リアルタイムメッセージ消費レート、滞留メッセージ消費レート、メッセージ滞留などのメトリックが含まれます。メトリックの下にあるオンラインクライアントリストには、各クライアントの接続ごとのリアルタイム消費レート接続ごとの滞留消費レートが表示されます。

ログの表示

設定が完了したら、IoT Platform コンソールにログインします。Enterprise Edition インスタンスで、[メンテナンス] > [デバイスログ] に移動します。Home Thermostat プロダクトを選択します。[クラウド実行ログ] タブで完全なログを表示できます。

ログページには、Device1 の 4 つのレコードが表示されます。ビジネスタイプは、サーバー側サブスクリプション (AMQP 操作あり)、クラウドからデバイスへのメッセージTSLデバイスからクラウドへのメッセージです。すべてのレコードのステータスコードは 200 で、正常なメッセージフローを示しています。

次のステップ

サーバーからデバイスへのコマンド送信