全部產品
Search
文件中心

ApsaraMQ for MQTT:使用者屬性

更新時間:Aug 01, 2024

本文為您介紹MQTT 5.0的新特性使用者屬性。

功能介紹

使用者屬性(User Properties)是MQTT 5.0協議定義的一種允許使用者在訊息中添加自訂中繼資料的機制。這些屬性以UTF-8的索引值對形式存在,‌不會影響訊息本身的內容,類似於HTTP的Header。允許使用者根據具體應用情境定製訊息的中繼資料,不僅增加了訊息傳輸的靈活性和適用性,還使得MQTT能夠更加高效地處理複雜的商務邏輯和需求。

使用限制

  • 使用者屬性序列化後大小不能超過8K位元組。

    序列化後的使用者屬性如下:

    [{"key":"mQ","value":"test001"},{"key":"MQ","value":"test002"}]

    該字串的長度不能超過8K位元組。

  • 僅儲存與轉寄PUBLISH報文中的使用者屬性,即只對發送訊息的使用者屬性進行儲存與轉寄。

使用說明

  • 使用者屬性是一個索引值對列表,鍵可以重複,MQTT服務不會進行去重操作。

  • 每個使用者屬性都是一個索引值對,鍵和值都必須為UTF-8編碼的字串。

應用情境

  • 裝置狀態報表:通過使用者屬性,裝置可以在發送狀態資料時附帶一些標識資訊,例如裝置類型、位置等,從而使得資料接收方在處理資料時可以根據這些屬性採取設定動作。

  • 訊息路由:在分布式系統中,可以根據使用者屬性的不同值來決定訊息的路由,增強系統對訊息的靈活處理能力。

  • 安全和審計:在敏感性資料傳輸中,使用者屬性可以攜帶審計資訊,例如會話ID、使用者標識等,有助於後續的安全審計和追蹤。

MQTT 5.0的使用者屬性功能,使得接收方能夠擷取關於訊息更豐富的上下文資訊,讓資料處理變得更加高效,操作更加有針對性,從而滿足多樣化的應用情境需求。

訊息樣本

例如,現在需要發送一個溫度讀數的訊息,同時附帶裝置所在位置和讀數取得的時間戳記。在這種情況下,您可以建立以下使用者屬性:

鍵:location 值:warehouse-section-a

鍵:timestamp 值:2021-09-15T12:00:00Z

當您的MQTT用戶端構建這條訊息時,除了標準的主題(Topic)和有效載荷(Payload),您還能夠添加上述的使用者屬性。發送到MQTT代理(Broker)的PUBLISH報文內容如下:

Topic: sensors/temperature
Payload: 22.4 // 這是實際的溫度讀數
User Properties: 
  "location : warehouse-section-a"
  "timestamp: 2021-09-15T12:00:00Z"

接收此訊息的用戶端就能擷取關於訊息更豐富的上下文資訊,不僅知道溫度讀數,還能瞭解讀數的具體位置和時間,使得資料的處理更為高效和有針對性。