デバイスがIoT Platformに接続されると、デバイスはIoT Platformにデータを送信します。 その後、Advanced Message Queuing Protocol (AMQP) を使用して、データをサーバーに転送できます。 このトピックでは、AMQPサーバー側サブスクリプションを設定する方法について説明します。 このようにして、サーバーはAMQPクライアントを使用して街灯からデータを受信できます。
背景情報
次の図は、デバイスメッセージを取得するためにAMQPサーバー側サブスクリプションを設定する方法を示しています。 詳細については、「AMQPサーバー側サブスクリプションの設定」および「AMQPクライアントをIoT Platformに接続する」をご参照ください。 
手順
IoT Platformコンソールにログインします。
[概要] タブで、[] をクリックします。パブリックインスタンス
重要IoT Platformが中国 (上海) 、シンガポール、日本 (東京) 、または米国 (バージニア) でアクティブ化されている場合は、この手順を実行します。 他のリージョンでIoT Platformがアクティブ化されている場合は、この手順をスキップします。
メッセージを消費するようにコンシューマグループを設定します。 サーバーはコンシューマグループをリッスンしてデバイスメッセージを取得できます。
左側のナビゲーションウィンドウで、 を選択します。 [サーバー側サブスクリプション] ページで、[コンシューマーグループ] をクリックします。
[コンシューマーグループ] タブで、[コンシューマーグループの作成] をクリックします。
[コンシューマーグループの作成] ダイアログボックスで、コンシューマーグループ名パラメーターをStreetLampConsumerGroupに設定し、[OK] をクリックします。
街路灯デバイスが属する製品のサーバー側サブスクリプションを設定します。 このようにして、サーバーは製品のさまざまな種類のメッセージを購読できます。
左側のナビゲーションウィンドウで、 を選択します。
サーバー側サブスクリプションページの [サブスクリプション] タブで、[サブスクリプションの作成] をクリックします。
[サブスクリプションの作成] ダイアログボックスでパラメーターを設定し、[OK] をクリックします。 下表に、各パラメーターを説明します。
パラメーター
説明
プロダクト
[StreetLamp] を選択します。
サブスクリプションタイプ
[AMQP] を選択します。
消費者グループ
前の手順で作成したStreetLampConsumerGroupコンシューマグループを選択します。
メッセージタイプ
[デバイスアップストリーム通知] を選択します。
AMQPクライアントをIoT Platformに接続します。
この例では、Javaが開発に使用されます。 Apache Qpid JMSクライアントを使用することを推奨します。 クライアントをダウンロードして手順を表示するには、「Qpid JMS 0.57.0」をご参照ください。
この例では、開発環境は次のコンポーネントで構成されています。
オペレーティングシステム: Windows 10 (64ビット)
Java開発キット (JDK): JDK 8
統合開発環境 (IDE): IntelliJ IDEAコミュニティエディション
AMQPクライアントをIoT Platformに接続するには、次の手順を実行します。
デモパッケージをダウンロードして解凍します。
IntelliJ IDEAを開き、サンプルプロジェクトのamqp-demoをデモパッケージにインポートします。
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です。
詳細については、「インスタンスのエンドポイントの表示」をご参照ください。
サンプルコードを実行すると、次のログデータが返されます。 データは、AMQPクライアントがIoT Platformに接続され、メッセージを受信できることを示します。
説明この例では、
Thread.sleep(60*1000);コードスニペットが追加され、プログラムが起動して1分間実行された後にプログラムを終了します。 ビジネス要件に基づいて実行時間を指定できます。