MQTT 簡介
瞭解使用 MQ 遙測傳輸 (MQTT) 在行動式應用程式之間傳送訊息。通訊協定預期用於無線及低頻寬網路。使用 MQTT 的行動式應用程式透過呼叫 MQTT 程式庫傳送及接收訊息。透過 MQTT 傳訊伺服器交換訊息。MQTT 用戶端及伺服器可針對行動式應用程式可靠地處理遞送訊息的複雜性,並保持低成本地進行網路管理。
MQTT 應用程式在行動式裝置(例如,智慧型手機及平板電腦)上執行。MQTT 也用於遙測,來從感應器接收資料,及從遠端控制資料。對於行動式裝置及感應器,MQTT 提供了可高度擴充的發佈/訂閱通訊協定,且保證遞送。若要傳送及接收 MQTT 訊息,請將 MQTT 用戶端程式庫新增至您的應用程式。
MQTT 用戶端程式庫比較小。程式庫如同郵箱,使用連接至 MQTT 伺服器的其他 MQTT 應用程式傳送及接收訊息。透過傳送訊息(而不是保持連接至等待回應的伺服器),MQTT 應用程式可節約電池壽命。程式庫透過執行 MQTT 3.1 版通訊協定的 MQTT 伺服器將訊息傳送至其他裝置。您可以將訊息傳送至特定的用戶端,或使用發佈/訂閱傳訊來連接許多裝置。
MQTT 用戶端程式庫會使用 MQTT 通訊協定,將用於行動式裝置及感應器的應用程式連接至 MQTT 伺服器。
IBM® MessageSight 及 IBM WebSphere® MQ 是 MQTT 伺服器。它們可以連接大量的 MQTT 用戶端應用程式,且可以將 MQTT 及 IBM WebSphere MQ 網路連接在一起。 請參閱開始使用 MQTT 伺服器。IBM WebSphere MQ 及 IBM MessageSight 可在執行於行動式裝置與感應器上的外部 Web 應用程式,以及其他在企業內執行的發佈/訂閱與傳訊類型應用程式之間,形成橋接器。此橋接便於建置併入行動式裝置及感應器的「智慧型解決方案」。
智慧型解決方案可將網際網路上可用的大量資訊解除鎖定至行動式裝置及感應器裝置上執行的應用程式。基於遙測的兩個智慧型應用程式範例是智慧型電力服務及智慧型健康服務。

- MQTT 訊息,包含傳送至服務提供者的電力使用資料。
- 遙測應用程式傳送基於電力使用資料分析的控制指令。
- 如需相關資訊,請參閱遙測實務範例:家庭電力監視及控制。

- 遙測應用程式將您的健康資料傳送至醫院及醫生。
- 可以根據健康資料的分析傳送 MQTT 訊息警示或意見。
- 如需相關資訊,請參閱遙測實務範例:家庭病患監視。
您可以針對 MQTT 通訊協定撰寫自己的應用程式,以將 MQTT 建置在小型裝置中。為協助您執行此動作,IBM 提供了用戶端程式庫,可支援透過 MQTT 執行的應用程式。請參閱開始使用 MQTT 用戶端。IBM 提供了適用於 iOS 應用程式與 Android 應用程式的用戶端程式庫
,以及適用於平台不明之 Web 應用程式的 JavaScript 瀏覽器用戶端。
JavaScript 用戶端頁面會使用 MQTT 通訊協定,透過 WebSockets 連接至 IBM MessageSight 及 IBM WebSphere MQ。IBM 還提供了適用於 Linux 和 Windows 上 C 及 Java™ 的 MQTT 範例應用程式。
C 和 Java 程式庫在 iOS、Android、Windows 及許多 UNIX 及 Linux 平台上執行。您可以將用於 MQTT 用戶端程式庫的 C 原始碼連接至其他平台。適用於 C 及 Java 的 MQTT 用戶端程式庫,可透過 Eclipse Paho 專案的開放程式碼授權取得。請參閱 Eclipse Paho。MQTT 通訊協定是開放式規格,可從 MQTT.org 取得。
MQTT 通訊協定
輕量型 MQTT 通訊協定意味著用戶端較小,可有效地使用網路頻寬。MQTT 通訊協定支援保證遞送及「隨發即忘」傳送。在通訊協定中,從應用程式取消連結訊息遞送。應用程式中取消連結的範圍視寫入 MQTT 用戶端及 MQTT 伺服器的方式而定。取消連結的遞送會從任何伺服器連線及從等待訊息釋放應用程式。互動模型如同電子郵件,但已針對應用程式程式設計進行最佳化。
MQTT 3.1 版 通訊協定已發佈;請參閱 MQTT 3.1 版 通訊協定規格。此規格識別有關通訊協定的許多特有的特性:
- 它是發佈/訂閱通訊協定。
- 除提供一對多訊息配送之外,發佈/訂閱還會取消連結應用程式。在具有許多用戶端的應用程式中,這兩種特性都很有用。
- 無論如何它不依賴於訊息內容。
- 它透過 TCP/IP 執行,TCP/IP 提供基本網路連線功能。
- 它具有三種用於訊息遞送的服務品質:
至多一次
- 根據基礎「網際網路通訊協定」網路的最佳效能遞送訊息。訊息可能會遺失。
- 例如,將此服務品質與通訊的環境感應器資料搭配使用。如果不久後會發佈下一個閱讀,則個別閱讀是否遺失並不重要。
至少一次
- 保證訊息會送達,但可能會重複。
只一次
- 保證訊息只送達一次。
- 例如,將此服務品質與帳單系統搭配使用。訊息重複或遺失可能會導致不方便或徵收不正確的費用。
- 在網路上管理訊息流程的方式非常經濟。例如,固定長度標頭的長度僅 2 個位元組,且會最大限度地減少通訊協定交換以減少網路資料流量。
- 它具有「最後留言」特性,可通知訂閱者用戶端與 MQTT 伺服器的連線異常中斷。請參閱最後留言發佈。
IBM IBM WebSphere MQ 及 IBM MessageSight 支援 MQTT 3.1 版。MQTT 透過 TCP/IP 實作。此通訊協定的另一版本 MQTT-S 可用於非 TCP/IP 網路。請參閱 MQTT-S 1.2 版 規格。
MQTT 社群
對於為 IBM MessageSight 及 IBM WebSphere MQ 編寫應用程式的 MQTT 開發者,IBM 會執行 developerWorks® 傳訊 社群。
MQTT.org 是瞭解及討論 MQTT 通訊協定的實作和延伸的好地方。
MQTT 是 Eclipse 技術專案 下的開放程式碼 Eclipse 專案。Paho 社群正在開發開放程式碼用戶端及伺服器。請參閱 Eclipse Paho。
概念