使用 IoT 中樞 訊息路由將裝置到雲端訊息傳送至 Azure 服務

訊息路由可讓您以自動化、可調整且可靠的方式將訊息從您的裝置傳送到雲端服務。 訊息路由可用來:

  • 將裝置遙測訊息和事件 傳送至內建端點和自定義端點。 可路由傳送的事件包括裝置生命週期事件、裝置對應項變更事件、數位對應項變更事件,以及裝置連線狀態事件。

  • 藉由套用豐富的查詢,先篩選數據再加以路由 。 訊息路由可讓您對訊息屬性和訊息本文,以及裝置對應項標記和裝置對應項屬性進行查詢。 如需詳細資訊,請參閱 訊息路由中的查詢。

IoT 中樞會針對所有裝置到雲端訊息定義常見格式,以在通訊協定之間提供互通性。 如需詳細資訊,請參閱建立和讀取 IoT 中樞 訊息

注意

本文所述的一些功能,例如雲端到裝置傳訊、裝置對應項和裝置管理,僅適用於標準層 IoT 中樞。 如需基本和標準/免費 IoT 中樞 層的詳細資訊,請參閱為您的解決方案選擇正確的 IoT 中樞 層。

路由端點

每個 IoT 中樞都有一個預設路由端點,稱為 訊息/事件 ,與事件中樞相容。 您也可以建立指向 Azure 訂用帳戶中其他服務的自訂端點。

IoT 中樞 目前支援下列訊息路由端點:

  • 內建端點
  • 儲存體容器
  • 服務匯流排佇列
  • 服務匯流排主題
  • 事件中樞
  • Cosmos DB

如需這些端點的詳細資訊,請參閱 IoT 中樞 端點

每個訊息都會路由傳送至其相符路由查詢的所有端點,這表示訊息可以路由至多個端點。 不過,如果訊息符合指向相同端點的多個路由,IoT 中樞 只會將訊息傳遞至該端點一次。

IoT 中樞需要具有對這些服務端點的寫入權限才能使訊息路由運作。 如果您透過 Azure 入口網站設定您的端點,則會為您新增必要的權限。 如果您使用 PowerShell 或 Azure CLI 設定端點,則必須提供寫入權限。

若要瞭解如何建立端點,請參閱下列文章:

請確定您設定服務以支援預期的輸送量。 例如,如果您使用事件中樞作為自定義端點,您必須設定該事件中樞的輸送量單位,以便處理您計畫透過 IoT 中樞 訊息路由傳送的事件輸入。 同樣地,使用服務匯流排佇列作為端點時,您也必須設定大小上限,以確保佇列可保存輸入的所有資料,直到由取用者輸出為止。 第一次設定 IoT 解決方案時,您可能必須監視其他端點,並對實際負載進行必要的調整。

如果您的自定義端點具有防火牆設定,請考慮使用 Microsoft 信任的第一方例外狀況。

路由傳送至另一個訂用帳戶中的端點

如果端點資源與您的IoT中樞位於不同的訂用帳戶中,您必須先將IoT中樞設定為受信任的 Microsoft 服務,再建立自定義端點。 當您建立自訂端點時,請將 [驗證類型] 設定為使用者指派的身分識別。

如需詳細資訊,請參閱從 IoT 中樞到其他 Azure 資源的輸出連線

路由查詢

IoT 中樞 訊息路由提供查詢功能,可在將數據路由至端點之前篩選數據。 您設定的每個路由查詢都具有下列屬性:

屬性 描述
名稱 可識別查詢的唯一名稱。
來源 要據以處理的資料串流來源。 例如裝置遙測。
Condition 適用於路由查詢的查詢運算式,會針對訊息應用程式屬性、系統屬性、訊息本文、裝置對應項標籤和裝置對應項屬性來執行,以判斷它是否符合端點。
端點 IoT 中樞傳送符合查詢之訊息的目的地端點名稱。 我們建議選擇與您 IoT 中樞位於相同區域的端點。

單一訊息可能符合多個路由查詢的條件,在這種情況下,IoT 中樞會將訊息傳遞至與每個相符查詢相關聯的端點。 IoT 中樞 也會自動重複數據刪除訊息傳遞,因此,如果訊息符合多個具有相同目的地的查詢,則只會將一次寫入該目的地。

如需詳細資訊,請參閱 IoT 中樞 訊息路由查詢語法

讀取已路由的數據

使用下列文章來瞭解如何從端點讀取訊息。

後援路由

後援路由會將任何現有路由上不符合查詢條件的所有訊息傳送至與事件中樞相容的內建端點(messages/events)。 如果訊息路由已啟用,您可以啟用後援路由功能。 建立任何路由之後,除非建立路由至該端點,否則數據會停止流向內建端點。 如果沒有路由傳送至內建端點,且已啟用後援路由,則只會將不符合路由上任何查詢條件的訊息傳送至內建端點。 即使刪除所有現有的路由,也必須啟用後援路由功能,才能在內建端點接收所有數據。

您可以在 [訊息路由] 刀鋒視窗的 [Azure 入口網站 中啟用或停用後援路由。 您也可以使用 Azure Resource Manager 來設定 FallbackRouteProperties 以將自訂端點用於後援路由。

非遙測事件

除了裝置遙測之外,訊息路由也會啟用傳送非遙測事件,包括:

  • 裝置對應項變更事件
  • 裝置生命週期事件
  • 裝置作業生命週期事件
  • 數位分身變更事件
  • 裝置連線狀態事件

例如,如果在將數據源設定為 [裝置對應項變更事件] 的情況下建立路由,IoT 中樞 將訊息傳送至包含裝置對應項變更的端點。 同樣地,如果在數據源設定為 [裝置生命週期事件] 的情況下建立路由,IoT 中樞 傳送訊息,指出裝置或模組是否已刪除或建立。 如需裝置生命週期事件的詳細資訊,請參閱 裝置和模組生命週期通知

使用 Azure IoT 隨插即用 時,開發人員可以使用設定為 Digital Twin Change Events 的數據源建立路由,並 IoT 中樞 每當設定或變更數位對應項屬性、取代數位對應項,或當基礎裝置對應項發生變更事件時傳送訊息。 最後,如果路由建立時,數據源設定為 [裝置 連線 狀態事件],IoT 中樞 傳送訊息,指出裝置是否已連線或中斷連線。

IoT 中樞也與 Azure Event Grid 整合發佈裝置事件,以根據這些事件支援即時整合和工作流程自動化。 請參閱訊息路由和事件方格之間的主要差異,以瞭解最適合您案例的情況。

裝置連線狀態事件的限制

裝置連線狀態事件適用於使用 MQTT 或 AMQP 通訊協定或透過 WebSocket 使用其中一種通訊協定進行連線的裝置。 只有使用 HTTPS 提出的要求不會觸發裝置連線狀態通知。 若要讓 IoT 中樞 開始傳送裝置連線狀態事件,開啟連線之後,裝置必須呼叫雲端到裝置接收訊息作業或裝置到雲端傳送遙測作業。 在 Azure IoT SDK 外部,在 MQTT 中,這些作業等同於適當傳訊主題上的 SUBSCRIBE 或 PUBLISH 作業。 透過 AMQP,這些作業等同於在適當的連結路徑上附加或傳輸訊息。 如需詳細資訊,請參閱下列文章:

IoT 中樞 不會報告每個個別裝置的連線和中斷連線事件,而是發佈以定期、60 秒快照集建立的目前連線狀態。 接收具有不同序號的相同連線狀態事件或是不同的連線狀態事件,這兩者都表示裝置連線狀態在 60 秒的時段期間內發生變更。

測試路由

當您建立新的路由或編輯現有的路由時,您應使用範例訊息來測試路由查詢。 您可以測試個別的路由,或一次測試所有的路由,而且測試期間不會將任何訊息路由傳送到端點。 Azure 入口網站、Azure Resource Manager、Azure PowerShell 和 Azure CLI 均可用於測試。 結果有助於識別範例訊息是否符合查詢、訊息不符合查詢,或測試是否因為範例訊息或查詢語法不正確而無法執行。 若要深入了解,請參閱測試路由 (部分機器翻譯) 和測試所有路由 (部分機器翻譯)。

Latency

當您路由傳送裝置到雲端遙測訊息時,在建立第一個路由之後,端對端延遲略有增加。

在大部分情況下,平均增加的延遲會少於 500 毫秒。 不過,您體驗的延遲可能會有所不同,而且視IoT中樞和解決方案架構的層級而定,可能會更高。 您可以使用路由:訊息/事件的訊息延遲或 d2c.endpoints.latency.builtIn.events IoT 中樞 計量來監視延遲。 在第一個路由之後建立或刪除任何路由不會影響端對端延遲。

監視和疑難排解

IoT 中樞提供幾個路由和端點相關計量,以便您概略了解中樞的健全狀況和傳送的訊息。 您也可以追蹤在評估路由查詢和端點健康情況期間發生的錯誤,如 IoT 中樞 IoT 中樞 資源記錄中的路由類別所感知。 若要深入瞭解如何搭配 IoT 中樞 使用計量和資源記錄,請參閱監視 Azure IoT 中樞

您可以使用 REST API 取得端點健康 情況來取得端點的健康狀態。

如需詳細資料和疑難排解路由的支援,請使用路由疑難排解指南