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

IoT Platform:IoT Platformからのデバイスメッセージのサブスクライブ

最終更新日:Apr 25, 2025

デバイスがIoT Platformに接続されると、デバイスはIoT Platformにデータを送信します。 その後、Advanced Message Queuing Protocol (AMQP) を使用して、データをサーバーに転送できます。 このトピックでは、AMQPサーバー側サブスクリプションを設定する方法について説明します。 このようにして、サーバーはAMQPクライアントを使用して街灯からデータを受信できます。

背景情報

次の図は、デバイスメッセージを取得するためにAMQPサーバー側サブスクリプションを設定する方法を示しています。 詳細については、「AMQPサーバー側サブスクリプションの設定」および「AMQPクライアントをIoT Platformに接続する」をご参照ください。 AMQP

手順

  1. IoT Platformコンソールにログインします。

  2. [概要] タブで、[] をクリックします。パブリックインスタンス

    重要

    IoT Platformが中国 (上海) 、シンガポール、日本 (東京) 、または米国 (バージニア) でアクティブ化されている場合は、この手順を実行します。 他のリージョンでIoT Platformがアクティブ化されている場合は、この手順をスキップします。

  3. メッセージを消費するようにコンシューマグループを設定します。 サーバーはコンシューマグループをリッスンしてデバイスメッセージを取得できます。

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

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

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

  4. 街路灯デバイスが属する製品のサーバー側サブスクリプションを設定します。 このようにして、サーバーは製品のさまざまな種類のメッセージを購読できます。

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

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

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

      パラメーター

      説明

      プロダクト

      [StreetLamp] を選択します。

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

      [AMQP] を選択します。

      消費者グループ

      前の手順で作成したStreetLampConsumerGroupコンシューマグループを選択します。

      メッセージタイプ

      [デバイスアップストリーム通知] を選択します。

  5. AMQPクライアントをIoT Platformに接続します。

    この例では、Javaが開発に使用されます。 Apache Qpid JMSクライアントを使用することを推奨します。 クライアントをダウンロードして手順を表示するには、「Qpid JMS 0.57.0」をご参照ください。

    この例では、開発環境は次のコンポーネントで構成されています。

    AMQPクライアントをIoT Platformに接続するには、次の手順を実行します。

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

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

    3. src/main/java/com.aliyun.iotx.de moディレクトリに格納されているAmqpClient.javaファイルで、JMSクライアントをIoT Platformに接続するために必要なパラメーターを設定します。 下表に、各パラメーターを説明します。

      パラメーター

      説明

      accessKey

      LTAI****************

      IoT Platformコンソールにログインし、プロファイル画像の上にポインターを移動し、[AccessKey管理] をクリックしてAccessKey IDとAccessKeyシークレットを取得します。

      説明

      RAMユーザーを使用する場合は、AliyunIOTFullAccess権限ポリシーをユーザーにアタッチする必要があります。 このポリシーにより、ユーザーはIoT Platformリソースを管理できます。 ポリシーをユーザーにアタッチしないと、IoT Platformへの接続が失敗します。 RAMユーザーに権限を付与する方法の詳細については、「RAMユーザーアクセス」をご参照ください。

      accessSecret

      yourAccessKeySecret

      consumerGroupId

      VWhGZ2QnP7kxWpeSSjt ******

      ステップ3で作成されたコンシューマグループのID。 IDを取得するには、次の手順を実行します。IoT Platformコンソールの [パブリックインスタンス] ページに移動します。 [メッセージ転送] > [サーバー側サブスクリプション] を選択します。 [サーバー側サブスクリプション] ページで、[コンシューマーグループ] をクリックします。 [コンシューマーグループ] タブにIDが表示されます。

      iotInstanceId

      • 新しいバージョンのパブリックインスタンス: iot-w3 ***

      • 旧バージョンのパブリックインスタンス: ""

      インスタンスの ID です。

      • 新しいバージョンのパブリックインスタンスを使用する場合は、[概要] ページでインスタンスIDを取得できます。 パブリックインスタンスを見つけて、IDを表示します。

      • 古いバージョンのパブリックインスタンスを使用する場合は、このパラメーターを空のままにします。

      詳細については、「概要」をご参照ください。

      clientId

      12345

      クライアントのID。 カスタムIDを指定する必要があります。 IDは1 ~ 64文字である必要があります。 クライアントIDとして、クライアントが実行されているサーバーのUUID、MACアドレス、IPアドレスなどの一意の識別子を使用することをお勧めします。

      AMQPクライアントがIoT Platformに接続して起動したら、次の手順を実行してクライアントの詳細を表示します。IoT Platformコンソールにログインし、管理するインスタンスのカードをクリックします。 左側のナビゲーションウィンドウで、[メッセージ転送] > [サーバー側サブスクリプション] を選択します。 [コンシューマーグループ] タブで、管理するコンシューマーグループを見つけ、[操作] 列の [表示] をクリックします。 各クライアントのIDは、[コンシューマーグループのステータス] タブに表示されます。 クライアントIDを使用して、クライアントを簡単に識別できます。

      connectionCount

      4

      AMQPクライアントで有効になっている接続の数。 最大値: 128。 このパラメーターは、リアルタイムのメッセージプッシュシナリオでのスケールアウトに使用されます。

      [コンシューマーグループの詳細] ページで、接続されている各クライアントは ${clientId}+ "-" + Numberとして表示されます。 最小数は0です。

      host

      • 新しいバージョンのパブリックインスタンス: iot-*** .amqp.iothub.aliyuncs.com

      • 旧バージョンのパブリックインスタンス: 198426864 ****** .iot-amqp.cn-shanghai.aliyuncs.com

      AMQPエンドポイント。

      • Javaを使用する場合、。NET、Python 2.7、Node.js、またはGoクライアントの場合、ポート番号は5671です。

      • Python 3またはPHPクライアントを使用する場合、ポート番号は61614です。

      詳細については、「インスタンスのエンドポイントの表示」をご参照ください。

    4. サンプルコードを実行すると、次のログデータが返されます。 データは、AMQPクライアントがIoT Platformに接続され、メッセージを受信できることを示します。

      説明

      この例では、Thread.sleep(60*1000); コードスニペットが追加され、プログラムが起動して1分間実行された後にプログラムを終了します。 ビジネス要件に基づいて実行時間を指定できます。

      Result