裝置到雲端 IoT 中樞訊息的訊息擴充

訊息擴充是 IoT 中樞的一項功能,可在將訊息傳送至指定的端點之前,為訊息加上其他資訊的戳記。 使用訊息擴充的其中一個原因是包含可用來簡化下游處理的資料。 例如,使用裝置對應項標籤擴充裝置遙測訊息,可減少客戶負載,以針對此資訊進行裝置對應項 API 呼叫。

訊息擴充流程

訊息擴充有三個主要元素:

  • 擴充名稱或索引鍵

  • 應套用擴充的一或多個端點

索引鍵是字串。 索引鍵只能包含英數字元或下列特殊字元:連字號 (-)、底線 (_) 和句號 (.)。

可以是下列範例其中一項:

  • 任何靜態字串。 不允許動態值,例如條件、邏輯、作業和函式。 例如,如果您開發數個客戶所使用的 SaaS 應用程式,您可以將識別碼指派給每個客戶,並在應用程式中提供該識別碼。 當應用程式執行時,IoT 中樞會為裝置遙測訊息加上客戶的識別碼戳記,使其得以為每個客戶以不同的方式處理訊息。

  • 傳送訊息的 IoT 中樞名稱。 此值為 $iothubname

  • 來自裝置對應項的資訊,例如其路徑。 範例為 $twin.tags.field$twin.tags.latitude

    注意

    目前,只有 $iothubname、$twin.tags、$twin.properties.desired 和 $twin.properties.reported 是訊息擴充支援的變數。 此外,擴充只支援基本類型。 訊息無法使用物件類型擴充。

訊息擴充會新增為傳送至所選端點的應用程式屬性。

套用擴充

這些訊息可能來自 IoT 中樞訊息路由支援的任何資料來源,包括下列範例:

  • 裝置遙測,例如溫度或壓力
  • 裝置對應項變更通知 -- 裝置對應項中的變更
  • 裝置生命週期事件,例如建立或刪除裝置的時間

您可以將擴充新增至要前往至 IoT 中樞內建端點的訊息,或新增至要路由至自訂端點 (例如 Azure Blob 儲存體、服務匯流排佇列或服務匯流排主題) 的訊息。

您也可以先建立具有裝置遙測訊息類型的事件方格訂用帳戶,以將擴充新增至要發佈至事件方格的訊息。 根據此訂用帳戶,我們會在遙測的 Azure IoT 中樞中建立預設路由。 此單一路由可以處理您的所有事件方格訂用帳戶。 接著,您可以使用 IoT 中樞 [訊息路由] 區段的 [擴充訊息] 索引標籤來設定端點的擴充。 如需使用事件方格回應事件的相關資訊,請參閱 IoT 中樞和事件方格

擴充會對每個端點套用。 如果您指定要為特定端點加上戳記的五個擴充,則前往該端點的所有訊息都會加上該相同的五個擴充戳記。

可以使用下列方法來設定擴充:

方法 命令
入口網站 Azure 入口網站 請參閱訊息擴充教學課程
Azure CLI az iot hub message-enrichment
Azure PowerShell Add-AzIotHubMessageEnrichment

新增訊息擴充不會將延遲新增至訊息路由。

若要試用訊息擴充,請參閱訊息擴充教學課程

限制

  • 對於標準或基本層中的中樞,您可以為每個 IoT 中樞新增最多 10 個擴充。 對於免費層中的 IoT 中樞,您最多可以新增 2 個擴充。

  • 在某些情況下,如果您要擴充的訊息含有設為裝置對應項中標記或屬性的值,該值將會加上以指定裝置對應項路徑的戳記。 例如,如果擴充值設定為 $twin.tags.field,將為訊息加上字串 "$twin.tags.field" 戳記,而不是來自對應項中該欄位的值。 此行為會在下列情況中發生:

    • 您的 IoT 中樞位於基本層。 基本層 IoT 中樞不支援裝置對應項。

    • 您的 IoT 中樞位於標準層,但用於擴充值的裝置對應項路徑不存在。 例如,如果擴充值設定為 $twin.tags.location,而裝置對應項在標籤下沒有 location 屬性,將為訊息加上字串 "$twin.tags.location" 戳記。

    • 您的 IoT 中樞位於標準層,但用於擴充值的裝置對應項路徑會解析為物件,而不是簡單屬性。 例如,如果擴充值設定為 $twin.tags.location,而標籤下的 location 屬性是包含子屬性 (如 {"building": 43, "room": 503}) 的物件,則會為訊息加上字串 "$twin.tags.location" 戳記。

  • 對裝置對應項的更新最多可能需要五分鐘的時間,才會反映在對應的擴充值中。

  • 包含擴充的訊息大小總計不能超過 256 KB。 如果訊息大小超過 256 KB,IoT 中樞將會捨棄訊息。 您可以使用 IoT 中樞計量,在捨棄訊息時識別和偵錯錯誤。 例如,您可以在路由計量中監視遙測訊息不相容 (d2c.telemetry.egress.invalid) 計量。 若要深入了解,請參閱監視 IoT 中樞

  • 訊息擴充不適用數位對應項變更事件。

  • 模組不會從其對應的裝置繼承對應項標記。 源自裝置模組的訊息擴充 (例如,來自 IoT Edge 模組),必須使用模組對應項上設定的對應項標籤。

定價

訊息擴充可以免費使用,不需額外付費。 目前,當您將訊息傳送至 IoT 中樞時,會向您收取費用。 即使該訊息傳送至多個端點,您仍只需針對該訊息支付一次費用。

後續步驟

如需將訊息路由至 IoT 中樞的詳細資訊,請參閱下列文章: