全部產品
Search
文件中心

ApsaraMQ for MQTT:主題別名

更新時間:Aug 03, 2024

本文為您介紹MQTT 5.0的新特性主題別名。

功能介紹

主題別名(Topic Alias)是MQTT 5.0協議中的一個新特性,允許用戶端和伺服器在互相通訊時使用簡短的整數值來代替完整的主題路徑,從而減少傳輸的負載,提升傳輸效率和降低頻寬消耗。

使用限制

  • 單個串連中,服務端最多支援30個Topic別名。用戶端發送給服務端的訊息中,topic別名個數超過30個則關閉串連,並報Topic名字錯誤。

  • 單個串連中,用戶端向服務端聲明自己支援的Topic別名個數最多設定為30個,超過30個,服務端推送訊息時將不會設定Topic別名。

  • 主題別名不能重複,Topic和別名在一個串連中一一對應。

  • 主題別名映射只對當前串連有效,重新串連不保證相同Topic的別名一樣。

使用說明

  • Topic Alias 值不能是0。

  • 用戶端發送的PUBLISH的Topic Alias不能大於服務端CONNACK回複的Topic Alias Maximum。用戶端必須接受所有大於0小於等於Topic Alias Maximum的Topic Alias(其在CONNECT報文中設定的)

  • Topic Alias 映射對於用戶端和服務端不是相等的。例如用戶端PUBLISH和服務端PUBLISH中的Topic別名都是1,但是它們可能指向不同的Topic。

使用情境

  • 頻寬受限的環境:如果裝置串連的網路頻寬非常有限,使用主題別名可以減少發送每條訊息所需的資料量,降低頻寬消耗。

  • 高頻率訊息發布:當用戶端需要頻繁地發布訊息到相同的幾個主題時,使用主題別名可以極大地減少冗餘資訊的發送。例如股市行情跟蹤或 IoT Tlog,這些系統可能每秒都會發送大量的訊息。

  • 節能:對於以電池供電的裝置,減少必須通過無線網路發送的資料量可以延長裝置的續航時間。例如遠程監控網站或行動裝置。

  • 資源受限的裝置:一些嵌入式裝置和IoT裝置的硬體資源有限,較短的主題別名可以使這些裝置處理訊息的速度更快並且佔用更少的記憶體。

MQTT 5.0的主題別名的功能,使得高頻率訊息傳輸、複雜長主題情境以及頻寬有限的網路環境等情況得到很好的改善,使得物聯網和即時通訊應用變得更加高效和靈活。

訊息樣本

例如,主題名稱為 home/groundfloor/livingroom/temperature 並被賦予了主題別名“1”,那麼在後續的訊息中只需要引用這個數字“1”即可。

第一個PUBLISH報文如下:

Topic Name: home/groundfloor/livingroom/temperature
Topic Alias: 1
Payload: 22°C

任何後續的PUBLISH報文都可以這樣發送:

Topic Alias: 1
Payload: 23°C

在這個例子中,使用主題別名後,後續的PUBLISH報文就不再需要發送冗長的主題名稱了。