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

IoT Platform:MNSサーバー側サブスクリプションの作成

最終更新日:Jun 25, 2025

このトピックでは、メッセージサービス (MNS) サーバー側サブスクリプションを作成して、製品の下にあるデバイスのステータス変更に関するメッセージをMNSキューにプッシュする方法について説明します。 サーバーは、MNSキューをリッスンすることでメッセージを受信できます。

前提条件

背景情報

次の図は、データの流れを示しています。

Server-side subscription

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

IoT Platformコンソールで、MNSサーバー側サブスクリプションを作成し、サブスクライブするメッセージのタイプを選択します。

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

  2. [概要] ページで、[すべての環境] をクリックします。 [すべての環境] タブで、管理するインスタンスを見つけ、インスタンスIDまたはインスタンス名をクリックします。

  3. 左側のナビゲーションウィンドウで、[デバイス] > [製品] を選択します。 [プロダクト] ページで、[プロダクトの作成] をクリックしてプロダクトを作成します。 この例では、ガス検出器製品が作成される。

  4. [デバイス] > [デバイスの追加] を選択して、ガス検出器製品の下にデバイスを作成します。

    Link SDKを使用してデバイスを開発する前に、デバイス証明書を取得する必要があります。

  5. 左側のナビゲーションウィンドウで、[ルールエンジン] > [サーバー側サブスクリプション] を選択します。 サーバー側サブスクリプションページで、[サブスクリプションの作成] をクリックして、MNSサーバー側サブスクリプションを作成します。 詳細については、「MNSサーバー側サブスクリプションの設定」をご参照ください。

    説明

    [サブスクリプションタイプ] ドロップダウンリストから初めてMNSを選択すると、IoT PlatformにMNSへのアクセスを許可するように求めるメッセージが表示されます。 [今すぐ許可] をクリックして、Resource Access Management (RAM) コンソールに移動します。 [承認ポリシーの確認] をクリックします。

    Message Typeパラメーターをデバイスステータス変更通知に設定します。 製品のデバイスのステータス変更に関するすべてのメッセージは、MNSキューにプッシュされます。

    サブスクリプションを作成すると、IoT Platformは自動的にMNSにキューを作成します。 キューは、IoT Platformからメッセージを受信するために使用されます。 キュー名の形式はaliyun-iot-${yourProductKey} です。 MNS SDKを使用してキューのメッセージをリッスンする場合は、キューの名前を指定する必要があります。

    [サブスクリプション] タブで、MNSの横にあるアイコンの上にポインターを移動して、MNSキューの名前を表示します。

    Server-side subscription

MNS SDKを使用したメッセージの受信

この例では、Java用のMNS SDKが使用されます。

  1. MNS SDK for Javaのサンプルパッケージをダウンロードし、パッケージを解凍します。 サンプルパッケージをダウンロードするには、「SDK for Javaのリリースノート」をご参照ください。

    この例では、aliyun-sdk-mns-samples-1.1.9.1.zipパッケージが使用されています。

  2. IntelliJ IDEAで、aliyun-sdk-mns-samples-1.1.9.1ディレクトリを選択してプロジェクトをインポートします。

  3. C:\Users \${ YourComputerUserName} のローカルディレクトリで、を作成します。aliyun-mns.propertiesファイル。 ID情報を次の形式でファイルに追加します。 識別情報は、認証のためにMNSによって使用される。

    説明

    Linuxの場合、ホームディレクトリは /home/YOURNAME/ です。 Windowsの場合、ホームディレクトリはC:\Users\YOURNAMEです。

    mns.accountendpoint=http://${your_accountId}.mns.${your_regionId}.aliyuncs.com
    mns.accesskeyid =${ your_accesskeyid}
    mns.accesskeysecret =${ your_accesskeysecret} 

    パラメーター

    説明

    accountendpoint

    MNSのエンドポイント。 MNSコンソールで、MNSキューが存在するリージョンを選択し、キューの [詳細] をクリックしてエンドポイントを表示します。

    accesskeyid

    Alibaba CloudアカウントのAccessKey IDとAccessKeyシークレットをします。

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

    accesskeysecret

  4. src\main\java\com.aliyun.mns.sample.QueueディレクトリのComsumerDemoファイルに次のコードを追加します。 このコードは、IoT Platformによって自動的に作成されるキューの名前を指定するために使用されます。

    public static void main(String[] args) {
            CloudAccountアカウント=新しいCloudAccount ()
                    ServiceSettings.getMNSAccessKeyId(),
                    ServiceSettings.getMNSAccessKeySecret() 、
                    ServiceSettings.getMNSAccountEndpoint();
            MNSClient client = account.getMNSClient(); // クライアントを初期化します。
    
            // メッセージを抽出します。
            try{
                CloudQueue queue = client.getQueueRef("aliyun-iot-a1eN7La ****");// IoT Platformによって自動的に作成されるキューの名前を指定します。
                for (int i = 0; i < 10; i++)
                {
                    Message popMsg = queue.popMessage(); // 長いポーリングのタイムアウト期間を指定します。
                    if (popMsg != null){
                        System.out.println("message handle: " + popMsg.getReceiptHandle());
                        System.out.println("message body: " + popMsg.getMessageBodyAsString()); // 生のメッセージを取得します。
                        System.out.println("message id: " + popMsg.getMessageId());
                        System.out.println("message dequeue count:" + popMsg.getDequeueCount());
                        //<<特別なロジックを追加します。>>
    
                        // キューからメッセージを削除します。
                        queue.de leteMessage(popMsg.getReceiptHandle());
                        System.out.println("delete message successfully.\n");
                    }
                }
            }
  5. ComsumerDemo.javaファイルを実行します。

デバイスSDKの設定

  1. [Link SDK] ページで、[SDK for Java] セクションを選択します。

  2. Link SDK for Javaのデモパッケージをダウンロードし、パッケージを解凍します。

    説明

    デモをダウンロードすることにより、ソフトウェアライセンス契約に同意したことになります。

  3. IntelliJ IDEAで、JavaLinkKitDemoディレクトリをプロジェクトとしてインポートします。

  4. device_idファイルで、デバイス証明書の情報を指定します。

    Server-side subscription

  5. src\main\java\com.aliyun.alink.devicesdk.de moディレクトリのMqttSampleファイルで、発行セクションでデバイスデータが送信されるトピックの名前を指定します。

    Server-side subscription

  6. src\main\java\com.aliyun.alink.devicesdk.de moディレクトリのHelloWorldファイルで、デバイスを接続するIoT Platformインスタンスのエンドポイントを指定します。

    エンドポイントの取得方法については、「インスタンスのエンドポイントの管理」をご参照ください。 Endpoint

  7. HelloWorld.javaファイルを実行して、デバイスをIoT Platformに接続します。

結果の検証

コードを実行すると、メッセージがMNSキューに送信されます。 メッセージは、デバイスがオンラインであることを示します。 MNS SDK for Javaを使用してメッセージを受信し、MNSキューからメッセージを削除できます。

メッセージを受信して削除する方法を次の図に示します。

Server-side subscription