Share via


Azure 事件方格中 MQTT 代理功能概觀

Azure 事件方格可讓您的 MQTT 用戶端彼此通訊並與 Azure 服務通訊,以支援物聯網 (IoT) 解決方案。

Azure 事件方格的 MQTT 代理功能可讓您完成下列案例:

  • 使用多對一傳訊模式擷取遙測。 此模式可讓應用程式卸除管理裝置到事件方格大量連線的負擔。
  • 使用要求-回應 (一對一) 傳訊模式來控制 MQTT 用戶端。 不論用戶端的角色為何,此模式都可讓任何用戶端與任何其他用戶端通訊,不受任何限制。
  • 使用一對多傳訊模式,將警示廣播給一群用戶端。 此模式可讓應用程式只發佈一則訊息,讓服務針對每個感興趣的用戶端複寫。
  • 透過 HTTP 推送傳遞功能,將 MQTT 訊息路由至 Azure 服務和 Webhook,以整合來自 MQTT 用戶端的資料。 與 Azure 服務的整合可讓您建置資料管線,以從 IoT 裝置擷取資料開始。

您可以在這個存放庫中找到示範這些案例的程式碼範例。

MQTT 代理非常適合用於汽車和行動案例等等的實作。 請參閱參考結構,了解如何使用 Azure 的傳訊和資料分析服務,建置安全且可調整的解決方案,以將數百萬輛車輛連線到雲端。

事件方格的高階圖表,顯示與發行者和訂閱者用戶端的雙向 MQTT 通訊。

重要概念

以下是 Azure 事件方格的 MQTT 代理功能所涉及的重要概念清單。

MQTT

MQTT 是一種發佈訂閱訊息傳輸通訊協定,專為受限制的環境所設計。 這是IoT案例的通訊標準,因為效率、延展性和可靠性。 MQTT 代理可以讓用戶端透過 MQTT v3.1.1、WebSocket 上的 MQTT v3.1.1、MQTT v5 和 WebSockets 通訊協定上的 MQTT v5,發佈和訂閱訊息。 下列清單顯示 MQTT 代理的某些功能重點:

  • MQTT v5 功能:

    • 最後遺囑和約 (LWT) 會以突然中斷其他 MQTT 用戶端的中斷通知 MQTT 用戶端。 您可以使用 LWT 來確保在非預期的中斷連線期間,MQTT 用戶端之間可預測且可靠的通訊流程。
    • 使用者屬性可讓您在訊息標頭中新增自定義機碼值組,以提供更多訊息內容。 例如,包含訊息的用途或來源,讓接收者可以有效地處理訊息。
    • 要求-回應模式可讓您的用戶端利用標準要求-回應非同步模式,在要求中指定回應主題和相互關聯識別碼,讓用戶端在沒有之前設定的情況下回應。
    • 訊息到期間隔可讓您在忽略不再相關或有效的訊息時,向 MQTT 訊息代理宣告。 例如,忽略過時的命令或警示。
    • 主題別名可協助您的用戶端減少主題欄位的大小,降低資料傳輸成本。
    • 訊息大小上限可讓您的用戶端控制可以處理的伺服器訊息大小上限。
    • 接收上限可讓您的用戶端依據處理速度或儲存體容量等功能,控制訊息速率。
    • 全新開始和工作階段到期可讓您的用戶端將用戶端的訂用帳戶資訊和訊息保留一段可設定的時間間隔,以最佳化工作階段的可靠性和安全性。
    • 否定通知可讓您的用戶端有效回應不同的錯誤碼。
    • 伺服器傳送的中斷連線封包可讓您的用戶端有效率地處理中斷連線。
  • MQTT 代理未來會新增更多 MQTT v5 功能,以配合 MQTT 規格的更多要求。 下列專案詳細說明 MQTT 訊息代理程式和 MQTT v5 規格所支援功能之間的目前差異:不支援保留旗標、訊息排序和 QoS 2。

  • MQTT v3.1.1 功能:

    • 最後遺囑和約 (LWT) 會以突然中斷其他 MQTT 用戶端的中斷通知 MQTT 用戶端。 您可以使用 LWT 來確保在非預期的中斷連線期間,MQTT 用戶端之間可預測且可靠的通訊流程。
    • 持續性工作階段可在用戶端中斷連線時保留用戶端的訂用帳戶資訊和訊息,確保可靠性。
    • QoS 0 和 1 可讓您的用戶端控制通訊的效率和可靠性。
  • MQTT 代理未來會新增更多 MQTT v3.1.1 功能,以配合 MQTT 規格的更多要求。 下列專案詳細說明 MQTT 訊息代理程式和 MQTT v3.1.1 規格所支援功能之間的目前差異:不支援保留旗標、訊息排序和 QoS 2。

深入了解 MQTT 代理和目前的限制。

發佈-訂閱傳訊模型

發佈-訂閱傳訊模型可以為用戶端提供可調整的非同步通訊。 它可讓用戶端將處理大量連線和訊息的負擔卸載至服務。 透過發佈-訂閱傳訊模型,用戶端可以使用一對多、多對一和一對一傳訊模式,有效率地進行通訊。

  • 一對多傳訊模式可讓用戶端只發佈一則訊息,讓服務為每個感興趣的用戶端複寫該訊息。
  • 多對一傳訊模式可讓用戶端將管理大量連線的負擔卸載至 MQTT 代理。
  • 一對一傳訊模式可讓任何用戶端與任何其他用戶端通訊,不受任何限制,而不管用戶端角色為何。

Namespace

事件方格命名空間是支援 MQTT 代理功能的資源,以及支援提取傳遞功能的資源所在的管理容器。 MQTT 用戶端可以連線到 MQTT 代理和發佈/訂閱訊息,而 MQTT 代理會驗證您的用戶端、授權發佈/訂閱要求,以及將訊息轉送至感興趣的用戶端。 深入了解命名空間概念。

用戶端

用戶端會參考發佈和訂閱 MQTT 訊息的 IoT 裝置或應用程式。

IoT 裝置是連線到網際網路的實體物件,可以傳輸遙測和接收命令。 這些裝置可以是感應器、設備、機器或其他配備內嵌感應器和軟體的物件。 感應器和軟體可讓裝置彼此通訊和互動,以及和周圍的環境通訊和互動。 IoT 裝置的價值在於它們可以提供即時資料和深入解析,讓企業和個人能夠做出明智的決策,並提升效率和生產力。

IoT 應用程式主要是用來與 IoT 裝置互動及處理資料的軟體。 它們通常包含資料收集、處理、儲存、視覺效果和分析等元件。 這些應用程式可讓使用者監視和控制連線的裝置、自動化工作,以及從 IoT 裝置產生的資料取得深入解析。

用戶端驗證

事件方格具有用戶端登錄,其中儲存了允許與其連線的用戶端相關資訊。 在用戶端連線之前,用戶端登錄中必須有該用戶端項目。 當用戶端連線到 MQTT 代理時,必須根據儲存在身分識別登錄中的認證向 MQTT 代理進行驗證。 MQTT 訊息代理程式支援 X.509 憑證驗證,這是 IoT 裝置中的業界驗證標準,以及 Azure 應用程式驗證標準的 Microsoft Entra ID深入瞭解 MQTT 客戶端驗證。

存取控制

考慮到 IoT 環境的巨大規模,以及受限制裝置的獨特安全性挑戰,存取控制對於 IoT 案例而言非常重要。 事件方格會透過彈性的存取控制模型來傳遞角色型存取控制 (RBAC),讓您可以管理用戶端發佈或訂閱主題的授權。

鑑於 IoT 環境的規模龐大,將每個用戶端的權限指派給每個主題非常繁瑣。 事件方格的彈性存取控制可透過將用戶端和主題分組到用戶端群組和主題空間,來解決此規模挑戰。 建立用戶端群組和主題空間之後,您可以設定權限繫結,將存取權授與用戶端群組以發佈或訂閱主題空間。

訪問控制模型的圖表。

主題空間也提供細微的存取控制,可讓您控制用戶端群組內每個用戶端的授權,以發佈或訂閱自己的主題。 這個細微的存取控制是使用主題範本中的變數來達成。 深入了解存取控制。

路由

事件方格可讓您將 MQTT 訊息路由傳送至 Azure 服務或 Webhook,以進一步處理。 因此,您可以在資料分析、儲存和視覺效果,以及其他使用案例中使用 IoT 資料,建置端對端解決方案。 路由設定可讓您將所有 MQTT 訊息從用戶端傳送至事件方格命名空間主題事件方格自訂主題。 訊息進入主題之後,您可以設定事件訂閱來取用主題中的訊息。 例如,此功能可讓您使用事件方格將遙測從 IoT 裝置路由傳送至事件中樞,然後路由傳送至 Azure 串流分析,以取得裝置遙測的深入解析。 深入了解路由。

MQTT 訊息路由的圖表。

邊線 MQTT 代理整合

事件方格會與 Azure IoT MQ 整合,橋接其在邊緣上的 MQTT 代理功能與雲端中的 Azure 事件方格 MQTT 代理功能。 Azure IoT MQ 是新的分散式 MQTT 代理,可用於邊緣計算、在已啟用 Arc 的 Kubernetes 叢集上執行。 它可以使用系統指派的受控識別,透過 Microsoft Entra ID (先前稱為 Azure Active Directory) 驗證連線到事件方格 MQTT 代理,以簡化認證管理。 Azure IoT MQ 可為 IoT 裝置和應用程式提供高可用性、可擴縮性和安全性。 現已在 Azure IoT 操作中提供公開預覽版深入瞭解如何將 Azure IoT MQ 連線到 Azure 事件方格 的 MQTT 訊息代理程式

MQTT 用戶端生命週期事件

用戶端生命週期事件可讓應用程式回應用戶端連線狀態或用戶端資源作業的相關事件。 它可讓您追蹤客戶端的連線狀態、回應用戶端中斷連線的風險降低動作,以及追蹤用戶端在自動故障轉移期間所附加的命名空間。 深入瞭解 MQTT 用戶端生命週期事件

下一步

使用下列文章,深入了解 MQTT 代理及其主要概念。

概念