全部產品
Search
文件中心

IoT Platform:服務端訂閱裝置訊息

更新時間:Jul 24, 2024

裝置串連物聯網平台後,資料直接上報至物聯網平台,平台上的資料可以通過AMQP通道流轉至您的伺服器。本文為您介紹通過配置AMQP服務端訂閱,實現企業伺服器通過接入AMQP用戶端,接收路燈裝置資料的完整流程。

前提條件

已接入裝置和上報資料。具體操作,請參見裝置接入和上報資料

準備開發環境

本文AMQP用戶端樣本使用Java開發語言,推薦使用Apache Qpid JMS用戶端。您可訪問Qpid JMS 0.57.0,查看Qpid JMS用戶端使用說明。

樣本使用的開發環境如下:

配置AMQP服務端訂閱

  1. 物聯網平台控制台執行個體概覽頁簽,單擊執行個體IoT測試環境

  2. 為訊息消費端配置消費組身份,用於企業伺服器通過消費組擷取轉寄的訊息。

    1. 在左側導覽列選擇訊息轉寄 > 服務端訂閱,單擊消費組列表頁簽。

    2. 單擊建立消費組

    3. 建立消費組對話方塊中,設定消費組名稱為溫控器資料接收,單擊確認

      建立消費組成功後,跳轉到消費組詳情頁面,查看消費組ID。您需複製並儲存消費組ID值,用於AMQP用戶端接入。消費組ID

  3. 為家庭溫控器產品佈建服務端訂閱,用於您的伺服器直接訂閱產品下多種類型的訊息。

    1. 在左側導覽列選擇訊息轉寄 > 服務端訂閱

    2. 服務端訂閱頁面的訂閱列表頁簽下,單擊建立訂閱

    3. 建立訂閱對話方塊,設定參數後單擊確認

      參數

      說明

      產品

      選擇家庭溫控器

      訂閱類型

      選擇AMQP

      消費組

      選擇上一步建立的溫控器資料接收

      推送訊息類型

      選擇裝置上報訊息物模型歷史資料上報。更多訊息類型,請參見配置AMQP服務端訂閱

    您也可以通過雲產品流轉功能,將資料轉寄至AMQP訂閱的消費組,使用AMQP用戶端接收訊息。例如,將流轉規則溫控器資料流轉中已處理的物模型資料上報內容,轉寄到AMQP訂閱的消費組溫控器資料接收中。具體操作,請參見資料轉寄到AMQP服務端訂閱消費組消費

AMQP用戶端接入樣本

  1. 下載Demo程式碼封裝,並解壓。

  2. 開啟IntelliJ IDEA,匯入Demo包中的樣本工程amqp-demo

    pom.xml檔案中,已添加Maven依賴,下載Qpid JMS用戶端。

  3. src/main/java/com.aliyun.iotx.demo目錄下AmqpClient.java檔案中,參照下表,修改JMS用戶端接入物聯網平台代碼中的參數值。

        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*****************";
    
        //iotInstanceId:執行個體ID。若是2021年07月30日之前(不含當日)開通的公用執行個體,請填Null 字元串。
        private static String iotInstanceId = "iot-cn-******";
    
        //控制台服務端訂閱中消費組狀態頁用戶端ID一欄將顯示clientId參數。
        //建議使用機器UUID、MAC地址、IP等唯一標識等作為clientId。便於您區分識別不同的用戶端。
        private static String clientId = "test_IoT";
    
        //${YourHost}為接入網域名稱,請參見AMQP用戶端接入說明文檔。
        private static String host = "iot-cn-******.amqp.iothub.aliyuncs.com";
    
        // 指定單個進程啟動的串連數
        // 單個串連消費速率有限,請參考使用限制,最大64個串連
        // 串連數和消費速率及rebalance相關,建議每500QPS增加一個串連
        private static int connectionCount = 4;

    參數

    說明

    accessKey

    登入物聯網平台控制台,將滑鼠移至帳號頭像上,然後單擊AccessKey管理,擷取AccessKey ID和AccessKey Secret。

    重要

    為避免將AccessKey寫入程式碼到業務代碼中帶來的安全風險,本樣本採用配置環境變數的方法管理AccessKey。

    您需在本地作業系統中添加環境變數ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET,並分別寫入已準備好的AccessKey ID和AccessKey Secret。

    accessSecret

    consumerGroupId

    已建立的溫控器資料接收消費組ID。請參見上文配置AMQP服務端訂閱的步驟2。

    iotInstanceId

    IoT測試環境的執行個體ID。您可在控制台的執行個體概覽頁簽查看。

    clientId

    表示用戶端ID,需您自訂,長度不可超過64個字元。建議使用您的AMQP用戶端所在伺服器UUID、MAC地址、IP等唯一標識。

    AMQP用戶端接入並啟動成功後,登入物聯網平台控制台,在對應執行個體的訊息轉寄 > 服務端訂閱 > 消費組列表頁簽,單擊消費組對應的查看消費組詳情頁面將顯示該參數,方便您識別區分不同的用戶端。

    host

    您購買執行個體成功後,儲存的AMQP接入網域名稱,請參見建立企業版執行個體

    您可在控制台中執行個體IoT測試環境執行個體詳情頁面,單擊查看開發配置,單擊AMQP頁簽查看。

    connectionCount

    啟動AMQP用戶端的串連數,最大不超過128個。用於即時訊息推送的擴容。

    消費組詳情頁面會以${clientId}+"-"+數字形式,顯示串連的用戶端。其中數字最小值為0。

  4. 運行AmqpClient.java範例程式碼後,返回類似如下日誌資訊,表示AMQP用戶端已接入物聯網平台並成功接收訊息。

    說明

    本樣本Demo代碼中,添加了結束程式的代碼(Thread.sleep(60 * 1000);),即程式啟動成功,運行一分鐘後會結束。實際情境中,您可根據需要自行設定已耗用時間。

    運行結果

    返回參數:

    參數

    參數值

    說明

    topic

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

    裝置屬性上報的Topic。

    messageId

    1324198300680719360

    訊息的ID。

    content

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

    訊息的內容。

    代碼運行成功後,您可在服務端訂閱中,查看消費組狀態的基本資料。

    具體操作,請參見管理AMQP消費組

    消費組狀態

查看日誌

所有配置完成後,登入物聯網平台控制台,在企業執行個體下的監控營運 > Log Service中,從產品列表選擇家庭溫控器,可在雲端作業記錄頁簽下,查看完整的日誌資訊。

日誌資訊

後續步驟

服務端下髮指令