MQTT 簡介

瞭解如何使用 MQ 遙測傳輸 (MQTT) 在行動式應用程式之間傳送訊息。 此通訊協定預期在無線及低頻寬網路上使用。 使用 MQTT 的行動式應用程式透過呼叫 MQTT 程式庫來傳送及接收訊息。 訊息是透過 MQTT 傳訊伺服器來交換。 MQTT 用戶端和伺服器會為行動式應用程式可靠地處理遞送訊息的複雜性,並保持網路管理成本較小。

MQTT 應用程式在行動式裝置上執行,例如智慧型手機及平板電腦。 MQTT 也用於遙測,以從感應器接收資料,並從遠端控制它們。 對於行動式裝置和感應器, MQTT 提供高度可調式發佈/訂閱通訊協定,並確保遞送。 若要傳送及接收 MQTT 訊息,請將 MQTT 用戶端程式庫新增至應用程式。

MQTT 用戶端程式庫很小。 該程式庫的作用就像信箱,與連接至 MQTT 伺服器的其他 MQTT 應用程式一起傳送及接收訊息。 透過傳送訊息,而不是保持連接至正在等待回應的伺服器, MQTT 應用程式可節省電池壽命。 磁帶庫會透過執行 MQTT version 3.1 通訊協定的 MQTT 伺服器,將訊息傳送至其他裝置。 您可以將訊息傳送至特定的用戶端,或使用發佈/訂閱傳訊來連接許多裝置。

MQTT 用戶端程式庫會使用 MQTT 通訊協定,將行動式裝置及感應器的應用程式連接至 MQTT 伺服器。

IBM® MessageSightIBM WebSphere® MQMQTT 伺服器。 它們可以連接大量 MQTT 用戶端應用程式,並且可以將 MQTTIBM WebSphere MQ 網路連接在一起。 請參閱 開始使用 MQTT 伺服器IBM WebSphere MQIBM MessageSight 可以在行動式裝置和感應器上執行的外部 Web 應用程式與企業內執行的其他類型發佈/訂閱及傳訊應用程式之間形成橋接器。 此橋接器可讓您更輕鬆地建置 智慧型解決方案 ,以納入行動式裝置及感應器。

智慧型解決方案可將網際網路上可用的大量資訊解除鎖定至行動式裝置及感應器裝置上執行的應用程式。 基於遙測的兩個智慧型應用程式範例是智慧型電力服務及智慧型健康服務。

圖 1. 智慧型電力計量
每個房屋的能源使用情形資料在 MQTT 訊息中傳送至服務提供者的影像,以及根據能源使用情形資料分析傳回房屋控制指令的 WebSphere MQ Telemetry 。
圖 2. 智慧型健康監視
MQTT 訊息的影像,其中包含傳送至醫院或醫生的性能資料,以及傳回訊息警示或意見。
  • 遙測應用程式將您的健康資料傳送至醫院及醫生。
  • 可以根據性能資料的分析來傳送 MQTT 訊息警示或意見。
  • 如需相關資訊,請參閱 遙測實務範例: 家庭病患監視

您可以撰寫自己的 MQTT protocol應用程式,將 MQTT 建置成小型裝置。 為了協助您這麼做, IBM 提供用戶端程式庫來支援在 MQTT上執行的應用程式。 請參閱 開始使用 MQTT 用戶端IBM 提供 iOS 應用程式及 Android 應用程式[2013 年 3 月 7.5.0.1 版]的用戶端程式庫,以及 JavaScript 平台不可知 Web 應用程式的瀏覽器用戶端[2013 年 3 月 7.5.0.1 版] JavaScript 用戶端頁面透過 WebSocketsMQTT 通訊協定連接至 IBM MessageSightIBM WebSphere MQ IBM 也在 Linux®Windows上提供適用於 C 和 JavaMQTT 範例應用程式。

C 和 Java 程式庫在 iOSAndroidWindows和一些 UNIX® and Linux 平台上執行。 您可以將 MQTT 用戶端程式庫的 C 原始碼移轉至其他平台。 適用於 C 和 JavaMQTT 用戶端程式庫可從 Eclipse Paho 專案取得開放程式碼授權。 請參閱 Eclipse PahoMQTT protocol 規格已開啟,並可從 MQTT.org取得。

MQTT protocol

從用戶端較小的角度來看, MQTT protocol 是輕量型,而且有效率地使用網路頻寬。 MQTT 通訊協定支援確保遞送及隨發即忘傳送。 在通訊協定中,從應用程式取消連結訊息遞送。 應用程式中取消連結的範圍取決於 MQTT 用戶端和 MQTT 伺服器的撰寫方式。 取消連結的遞送會從任何伺服器連線及從等待訊息釋放應用程式。 互動模型如同電子郵件,但已針對應用程式程式設計進行最佳化。

已發佈 MQTT V3.1 通訊協定; 請參閱 MQTT V3.1 通訊協定規格。 此規格識別有關通訊協定的許多特有的特性:

  • 它是發佈/訂閱通訊協定。
    • 除提供一對多訊息配送之外,發佈/訂閱還會取消連結應用程式。 在具有許多用戶端的應用程式中,這兩種特性都很有用。
  • 無論如何它不依賴於訊息內容。
  • 它透過 TCP/IP 執行,TCP/IP 提供基本網路連線功能。
  • 它具有三種用於訊息遞送的服務品質:
    至多一次
    根據基礎「網際網路通訊協定」網路的最佳效能遞送訊息。 訊息可能會遺失。
    例如,將此服務品質與通訊的環境感應器資料搭配使用。 如果不久後會發佈下一個閱讀,則個別閱讀是否遺失並不重要。
    至少一次
    保證訊息會送達,但可能會重複。
    只一次
    保證訊息只送達一次。
    例如,將此服務品質與帳單系統搭配使用。 訊息重複或遺失可能會導致不方便或徵收不正確的費用。
  • 在網路上管理訊息流程的方式非常經濟。 例如,固定長度標頭的長度僅 2 個位元組,且會最大限度地減少通訊協定交換以減少網路資料流量。
  • 它具有 最後留言 功能,可將用戶端與 MQTT 伺服器的異常斷線通知訂閱者。 請參閱 最後留言發佈

IBM IBM WebSphere MQIBM MessageSight支援 MQTT version 3.1MQTT 是透過 TCP/IP 實作。 另一個版本的通訊協定 MQTT-S可用於非 TCP/IP 網路。 請參閱 MQTT-S version 1.2 規格

MQTT 社群

IBM 正在針對撰寫 IBM MessageSightIBM WebSphere MQ應用程式的 MQTT 開發人員執行 IBM Developer 傳訊 社群

MQTT.org 是一個很好的地方,可讓您瞭解並討論 MQTT 通訊協定的實作及延伸。

MQTTEclipse 技術專案下的開放程式碼 Eclipse 專案。 Paho 社群正在開發開放程式碼用戶端及伺服器。 請參閱 Eclipse Paho