本文介紹ApsaraMQ for MQTT支援的MQTT 5.0新特性的訊息格式描述。
功能介紹
訊息格式描述(Payload Format Indicator)是MQTT 5.0特有的特性,這是一個標誌位,用於指示PUBLISH訊息的負載內容是否是預定義的格式。
它使得接收者可以更容易地解釋PUBLISH訊息的負載。這個標誌位可以設定為0或1,0表示未指定,1表示負載是一個UTF-8編碼的字元資料。
用戶端發送到服務端時,如果Payload Format Indicator為1,則服務端會校正格式是否為UTF-8,如果不是UTF-8則發送失敗,在QoS為1時回複錯誤碼為PAYLOAD_FORMAT_INVALID的PubAck報文。
應用情境
格式協商:此特性允許發行者和訂閱者間就訊息內容格式達成共識。例如,如果設定負載格式指示為UTF-8編碼,訂閱者在收到訊息時就能知道如何正確解碼和處理負載資料。
解碼驗證:在接收到的訊息中使用訊息格式描述,接收者可以驗證訊息是否符合預期的編碼或格式,從而更加安全地處理訊息內容。
互通性和相容性:在多種用戶端或服務共用一個MQTT系統時,可以確保所有用戶端都能解讀和理解訊息內容。
訊息樣本
假設有一個MQTT用戶端正在發布一個JSON格式的訊息,它希望其他訂閱這個主題的用戶端知道這個訊息的負載是一個UTF-8編碼的JSON文本。
PUBLISH
Topic: sensor1/data
Payload Format Indicator: 1 // 訊息負載是預定義的格式,UTF-8編碼的
Payload: {"temperature": 22.3, "humidity": 48}通過在PUBLISH訊息中設定負載格式描述(Payload Format Indicator)為1,發行者告訴訂閱者這個訊息的負載是符合UTF-8編碼的。因此,像這樣的JSON資料應該是以UTF-8編碼的字串,而不是位元據或其他編碼。所有訂閱了sensor1/data主題的用戶端在收到訊息時就會明白負載的格式,並可以相應地解析JSON資料。
訊息格式描述特性在MQTT 5.0協議中提高了資料轉送的準確性和效率,確保不同用戶端之間能夠互相理解和處理訊息資料。此外,當整合多個來源且可能使用不同資料格式的系統時,該特性可大大提高系統處理速率。