MQTTnet 入門 Ⅰ:淺談 MQTT 概念、架構、特色、QoS設定

MQTTnet入門:淺談 MQTT概念、架構、QoS

MQTTnet 入門 Ⅰ
淺談 MQTT
概念、架構、QoS

隨著物聯網技術的發展,MQTT(Message Queuing Telemetry Transport)作為一個輕量級、可靠且高效的通訊協定,在物聯網應用中扮演著重要的角色。MQTT 的設計目的是為了在資源受限的環境中進行可靠的訊息傳輸。本文將帶您深入瞭解 MQTT 的基本概念、架構、特色、QoS設定。

基本概念

MQTT T(Message Queuing Telemetry Transport)是一個基於發布/訂閱(Publish/Subscribe)模式的通訊協定。它包含以下重要概念:

  • Broker(代理伺服器):作為 MQTT 系統的核心,負責接收和分發訊息。
  • Client(客戶端):設備或應用程序,可以是發布者(Publisher)或訂閱者(Subscriber)。
  • Topic(主題):訊息分類的機制,客戶端可以訂閱特定的主題來接收相關訊息。
  • QoS(Quality of Service):訊息傳遞的質量等級。

架構

MQTT 架構:publisher、broker、subsciber的關係

MQTT的架構非常簡單,主要由以下三個組件組成:

  • Publisher(發布者):將訊息發布到特定的主題。
  • Broker(代理伺服器):接收發布的訊息,並將訊息分發給相應的訂閱者。
  • Subscriber(訂閱者):訂閱特定的主題,接收與其相關的訊息。

從圖中可以看到系統中有兩個 Sensor 會分別將所收到的環境資訊發布(Publish)到各自的主題(Topic),而有兩個程式分別去接收各個主題的訊息,並針對不同主題的訊息進行相應的資料處理及應用。

特色

  • 輕量級:MQTT 的協定非常簡潔,佔用的資源很少,適用於資源受限的設備。
  • 低寬頻消耗:MQTT 使用二進制協定,資料包的大小非常小,節省了寬頻的使用。
  • 高可靠性:MQTT 支援確保訊息傳遞的機制,確保訊息不會丟失並按照正確的順序傳遞。
  • 靈活性:MQTT 的發布/訂閱模式可以彈性地擴展和組織訊息的傳遞。
  • 支援離線消息:MQTT 支援離線消息的暫存和傳遞,保證在斷開連接後的重新連接時不會丟失訊息。
  • 安全性:MQTT 提供了安全性機制,如TLS/SSL加密和使用者驗證,以確保訊息的保密性和完整性。

QoS的設定

MQTT定義了三種不同的訊息傳遞品質(QoS)等級,用於控制訊息的可靠性和傳遞保證:

  1. QoS 0(At most once):最多一次,訊息發送者只發送一次訊息,不關心訊息是否已經確實傳遞。
  2. QoS 1(At least once):至少一次,訊息發送者確保訊息至少傳遞一次,但可能會重複傳遞。
  3. QoS 2(Exactly once):僅一次,訊息發送者確保訊息只傳遞一次,並且訊息不會被重複傳遞。

Retained Message

Retain Message 它允許發布者在發送訊息時指定一個Retain標誌。當訂閱者訂閱主題時,如果該主題上存在帶有Retain標誌的最新訊息,訂閱者將立即接收到這條訊息。這對於需要訪問最新狀態的設備非常有用。

MQTT 實作

基本上各個語言現在都有很豐富的 MQTT 相關套件可以實作 MQTT 通訊,我有使用 C# 的 MQTTnet 套件分別實作了MQTT Broker 和 Client ,詳細用法請參考系列文章:

MQTTnet 入門 Ⅱ:使用 .NET 6 Worker 建立 MQTT Broker
MQTTnet 入門 Ⅲ:使用 .NET 6 Worker 建立 MQTT Client

MQTT 作為一個輕量級、可靠和高效的通訊協定,為物聯網項目提供了強大的資料通訊能力。深入瞭解 MQTT將有助於您在物聯網應用中有效地使用和管理訊息傳遞。希望這篇文章對您對於MQTT的理解有所幫助,並在未來的專案中能夠更好地應用MQTT的功能。如果您有任何問題或想法,歡迎在下面的評論區分享。謝謝閱讀!

參考資料

MQTT: The Standard for IoT Messaging

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *