全部產品
Search
文件中心

IoT Platform:訂閱選項

更新時間:Jun 30, 2024

本文介紹物聯網平台支援的MQTT 5.0新特性的訂閱選項。

功能說明

裝置訂閱時通過設定訂閱選項可以改變物聯網平台的行為,MQTT 5.0支援的訂閱選項如下:

特性

說明

QoS level

MQTTMessage Service品質等級,與MQTT 3.1相同。

No Local

裝置是否接收自己發布的訊息。

Retain As Publish

物聯網平台向裝置發布訊息時是否保留其中的Retain標識。

Retain Handling

指定訂閱建立時服務端是否向裝置發送保留訊息。

重要
  • 使用C LinkSDK接入時,訂閱選項預設值都為0。

  • No Local選項建議設定為1,可以減少不必要的訊息傳輸。

QoS level

訊息品質分三個等級:

等級

說明

常見情境

QoS 0

訊息最多收到一次,訊息不可靠傳輸,訊息可能丟失。

感應器資料轉送使用該等級。

QoS 1

訊息最少收到一次,訊息可靠傳輸,訊息必達。

遠端控制指令。

QoS 2

訊息僅收到一次。

說明

物聯網平台暫不支援。

無。

No Local

對於MQTT 3.1.1版本協議,如果裝置訂閱了自己發布訊息的Topic,則裝置會接收到自己發布的訊息。而使用MQTT 5.0版本協議,此情境下,裝置在訂閱Topic時,可以設定此選項為1,裝置將不會接收到自己發布的訊息。

可取值:

  • 1:不接收。

  • 0:接收。

裝置通配訂閱時,使用該特性,既簡化訂閱動作,又可以避免收到無意義的訊息。如下圖所示:

image..png

Retain As Publish

物聯網平台向裝置端轉寄訊息時,可指定是否需要保留訊息中的Retain標識。

配置方法,訂閱Topic時設定Retain As Publish

  • 1:物聯網平台轉寄普通訊息時,保留Retain標識;代理髮送保留訊息時,保留Retain標識。

  • 0:物聯網平台轉寄普通訊息時,不保留Retain標識;代理髮送保留訊息時,保留Retain標識。

如下表所示,發行者發布訊息中Retain標識可為:

  • True:發布訊息中有Retain標識,根據Retain As Publish設定,決定裝置收到訊息中是否保留該標識。

  • False:發布訊息中沒有Retain標識,Retain As Publish設定無效,訊息中都不會保留該標識。

發行者發布訊息中Retain

發布時訂閱狀態

訂閱選項(Retain As Publish)

裝置收到的訊息中Retain

True

已訂閱(立即轉寄訊息)

1

True

0

False

無訂閱(訂閱後,發布保留訊息)

1

True

0

True

False

任意狀態

任意值

False

由上可知,裝置訂閱收到的訊息中Retain標識有兩層含義:

  • 發行者發布訊息時,是否有Retain標識,通過將Retain As Publish設定為1實現。

  • 訊息是否為保留訊息,由物聯網平台保留代理髮布的,通過將Retain As Publish設定為0實現。

Retain Handling

該特性用來指定訂閱建立時服務端是否向裝置發送保留訊息。

取值:

  • 0:只要裝置訂閱成功,服務端就發送保留訊息。

  • 1:裝置訂閱成功且該訂閱之前不存在,服務端才發送保留訊息。同一個會話,重複訂閱的情境將不再收到保留訊息。

  • 2:即使裝置訂閱成功,服務端也不會發送保留訊息。