有時候您想要讓 MQTT 用戶端和其他用戶端在一個中樞中同時使用 Azure Web PubSub 的通訊協定,以啟用跨通訊協議通訊。 本檔會定義這類通訊的運作方式。
概念
首先,讓我們在跨通訊協定通訊的內容中釐清概念。
- MQTT 用戶端:使用 MQTT 通訊協定的用戶端。
-
Web PubSub 用戶端:使用 Web PubSub 本身的通訊協定搭配 pub/sub 功能的用戶端。 範例包括
json.webpubsub.azure.v1
、protobuf.webpubsub.azure.v1
、json.reliable.webpubsub.azure.v1
和protobuf.reliable.webpubsub.azure.v1
。 您可以在這裡找到 Web PubSub 用戶端通訊協定的概觀。 -
可靠的 Web PubSub 用戶端:使用 Web PubSub 可靠通訊協定的 Web PubSub 用戶端子集,特別是
json.reliable.webpubsub.azure.v1
和protobuf.reliable.webpubsub.azure.v1
。
概念對應
訊息路由行為
從概 觀:Azure Web PubSub 服務中的 MQTT,我們瞭解在 Web PubSub 通訊協定中加入群組的運作方式與訂閱 MQTT 中的相同具名主題相同。 同樣地,傳送至群組表示發佈至相同的具名主題。 這表示如果使用 Web PubSub 通訊協定的用戶端會聯結群組 a
,則會從傳送至主題 a
的 MQTT 用戶端取得訊息,反之亦然。
訊息內容類型轉換
在 Web PubSub 通訊協定中,有四種訊息數據類型:Text、Binary、JSON 和 Protobuf。
在 MQTT 通訊協定中,沒有字段可指出 MQTT 3.1.1 中的訊息內容類型,但 MQTT 5.0 中有字串「內容類型」欄位。
以下是 MQTT “content type” 字段與 Web PubSub 訊息數據類型之間的轉換:
MQTT 「內容類型」 | Web PubSub “message 數據類型” |
---|---|
application/json |
JSON |
text/plain |
Text |
application/x-protobuf |
Protobuf |
application/octet-stream |
Binary |
缺席或 MQTT 3.1.1 | Binary |
訊息內容轉換
對於以文字為基礎的 Web PubSub 訊息數據類型,包括 text
和 json
,它們會透過 UTF-8 編碼來回轉換成 MQTT。 對於二進位型 Web PubSub 訊息數據類型,包括 protobuf
和 binary
,它們在 MQTT 訊息內容中會維持完全相同。
訊息服務品質 (QoS) 轉換
在 Web PubSub 通訊協定中,用戶端接收之訊息的 QoS 是由客戶端的通訊協定所決定。 可靠的用戶端只會取得 QoS 1 訊息,而其他用戶端則只會取得 QoS 0 訊息。
在 MQTT 通訊協定中,用戶端接收之訊息的 QoS 取決於訊息 QoS(傳送 QoS)和授與的訂用帳戶 QoS,特別是這兩者較小的值。
當訊息跨通訊協定傳輸時,所接收 QoS 的定義如下:
郵件寄件者 | 訊息接收者 | QoS 評估 |
---|---|---|
MQTT 用戶端 | Reliable Web PubSub 用戶端 | QoS 一律為 1 |
MQTT 用戶端 | 其他 Web PubSub 用戶端 | QoS 一律為 0 |
Web PubSub 用戶端 | MQTT 用戶端 | Min(1, 已授與訂用帳戶 QoS) |
其他
此處列出的訊息屬性會在通訊協議之間生效。 其他人則不。
- MQTT 訊息到期間隔