前言
在學習和使用 MQTT 的過程中,一個得心應手的用戶端工具可以極大的友善使用者進行 MQTT 特性的探索和功能元件的調試。來自世界各地的開發者們圍繞不同作業系統、運作平台,開發出了許多針對 MQTT 協定的用戶端測試工具。
這些用戶端工具種類繁多,功能側重點不盡相同,品質層次不齊,是以,對于初學者乃至 MQTT 專家來說,如何選擇一個适用的 MQTT 用戶端工具是一個難題。
本篇文章将盡可能的搜集整理,對市面上各類 MQTT 用戶端工具做一個全面的測評以供讀者參考。
MQTT 用戶端工具需要具備的功能特點
MQTT 用戶端工具常用于建立與 MQTT Broker 的連接配接,進行主題訂閱、消息收發等操作。一個 MQTT 用戶端工具的功能特點可以從以下方面評估:
- 每個使用環節中工具需要盡可能提供全面的參數配置能力、使用到 MQTT 的全部特性,以便使用者應對任何使用場景、使用方式的模拟測試。這部分特性包括支援用戶端認證,支援配置證書及多種加密方式連接配接,支援 MQTT 連接配接、釋出、訂閱過程中多項參數的配置,支援 MQTT 5 等;
- 在功能全面的基礎上提升使用者的互動便捷性;
- 提供其他拓展功能,如同時支援多個用戶端連接配接、MQTT 協定調試;
- 跨平台,不同作業系統下都可以使用
本文将結合每個用戶端工具的特點,從以上幾點進行測評介紹,參選的用戶端工具如下:
- Mosquito CLI
- MQTTX
- MQTT.fx
- MQTT Box
- mqtt-spy
- MQTT Lens
Mosquito CLI
Mosquitto 是一個開源(EPL/EDL 許可證)的消息代理,Mosquitto 安裝之後預設提供了 mosquitto_pub 和 mosquitto_sub 兩個指令行 MQTT 用戶端工具。
項目位址:Github Mosquitto
下載下傳位址:Mosquitto 官網
Mosquito CLI 有多個配置選項,支援 TLS 證書連接配接、通過代理伺服器連接配接,支援 debug 模式,在 debug 模式下可以擷取更詳細的消息資訊。
Mosquito CLI 足夠輕量緊湊且便于安裝,可以以多種連接配接方式并行的建立多個 MQTT 用戶端,完成消息的釋出/訂閱測試。
它的使用也非常簡便,預設使用環境隻需提供少許參數即可使用:
## 開啟 DEBUG 模式訂閱 testtopic/# 主題
wivwiv-mac:workspace emqtt$ mosquitto_sub -t "testtopic/#" -d
Client mosqsub/66418-wivwiv-ma sending CONNECT
Client mosqsub/66418-wivwiv-ma received CONNACK
Client mosqsub/66418-wivwiv-ma sending SUBSCRIBE (Mid: 1, Topic: testtopic/#, QoS: 0)
Client mosqsub/66418-wivwiv-ma received SUBACK
Subscribed (mid: 1): 0
Client mosqsub/66418-wivwiv-ma received PUBLISH (d0, q0, r0, m0, 'testtopic/1', ... (5 bytes))
Hello
## 釋出一條消息到 testtopic/1 主題
mosquitto_pub -t "testtopic/1" -m "Hello"
有關 Mosquitto 和 Mosquitto CLI 的安裝使用詳見 Mosquitto 官網。
MQTTX
MQTTX 是 EMQ 開發的跨平台可視化 MQTT 用戶端工具,在 Apache License 2.0 協定下開源。
項目位址:Github MQTTX
下載下傳位址:Github MQTTX Release
MQTTX 具備以下特性:
- 可以建立任何 MQTT Broker 連接配接
- 支援 MQTT/WebSocket 連接配接和 MQTT/TCP 連接配接
- 支援訂閱主題
- 支援消息的發送和接收
- 跨平台桌面,支援 Windows、MacOS 和 Linux
MQTTX 是最新推出的産品,采用了 Electron 跨平台技術,界面美觀且資源占用較低。MQTTX 在互動上一改常見的單一用戶端模式,按照 Broker 配置來組織用戶端資訊,允許在同一份 Broker 配置下儲存多個用戶端資訊;以消息聊天的互動形式收發消息,允許同時建立多個用戶端連接配接并自由切換互相通信,有較好的互動性,大大提高了互動調試的效率。

截止目前 MQTTX 釋出了 v1.1.1 版本,後續更多功能還在開發中讓我們拭目以待。
MQTT.fx
MQTT.fx 是 Jens Deters 個人開發的、目前主流的 MQTT 用戶端,可以快速驗證是否可以與 IoT Hub 服務互動釋出或訂閱消息,MQTT.fx 适用 Apache License 2.0 協定但并未提供源碼。
項目位址:未提供源碼
下載下傳位址:MQTT.FX
MQTT fx 具備以下特性:
- 預定義消息模闆
- 通過系統主題
擷取 Broker 狀态(支援 HiveMQ 和 Mosquitto)$SYS
- 記憶最近使用主題的
- 通過 Nashorn Engine ,支援 JavaScript 腳本
- 支援日志顯示,顯示連接配接中的日志資訊
- 跨平台桌面,支援 Windows、MacOS 和 Linux
MQTT.fx 是一個老牌的 MQTT 用戶端工具,Azure IoT Hub、AWS IoT、阿裡雲 IoT 等雲服務提供商相關産品文檔教程均以 MQTT.fx 為例。MQTT.fx 使用 JavaFX 技術開發,由于 Java 虛拟機的關系可能在某些老舊機器上會有卡頓的體驗。
基礎功能上 MQTT .fx 可以儲存多個連接配接配置,支援多種類型 TCL 加密方式,指定多種類型的證書。建立連接配接時可以指定使用 HTTP 代理伺服器,連接配接成功後整個釋出、訂閱功能使用相對來說比較合理流暢,
Topics Collector
功能可以發現通過其他方式如 Broker 端代理訂閱訂閱的主題是一個功能亮點。MQTT.fx 還支援 Google Cloud Iot 的連接配接測試。
進階功能中 MQTT.fx 有最大的亮點支援執行 JavaScript 功能腳本,借助 Nashorn Engine 使用者編寫的 JavaScript 代碼可以通路 Java 方法與字段實作功能擴充,熟悉 MQTT.fx 相關 API 後使用者可以編寫出适應業務的測試腳本,模拟傳感器上報資料,甚至是性能測試工具等更多強大的功能。
如果您使用的是 HiveMQ 或者 Mosquitto Broker,MQTT.fx 提供專門的一個頁籤,通過訂閱這兩者的系統主題(用于釋出 Broker 運作資訊的主題)實作 Broker 狀态可視化檢視,可即時擷取到 Broker 的版本、時間等系統資訊和用戶端數量、消息數量網絡流量和負載狀況等運作資訊。
總的來說 MQTT.fx 有豐富且成熟的功能,支援了 TCP 連接配接中所有可能遇到的配置項,除了互動性略差,使用者同一時間隻能建立一個連接配接,不能滿足同時使用多個測試連接配接的需求。另外它沒有實作對 WebSocket 的支援,在 MQTT over WebSockets 的測試場景中無法使用。
MQTT Box
MQTT Box 是 Sathya Vikram 個人開發的 MQTT 用戶端工具,最初僅在 Chrome 上使用,作為浏覽器拓展安裝使用, 後經重寫開源成為桌面端跨平台獨立軟體。
項目位址:GitHub MQTTBox
下載下傳位址:http://workswithweb.com/mqttbox.html
MQTT Box 具備以下特性:
- 通過支援 Chrome OS,Linux,Mac OS,Windows 的 Chrome 存儲易于安裝,支援 Linux、Mac OS、Windows 獨立安裝
- 支援 MQTT、MQTT over WebSocket,多種 TCP 加密方式的連接配接
- 儲存發送的曆史記錄
- 複制/粘貼曆史記錄中的消息
- 儲存訂閱消息曆史記錄
- 簡單的性能測試,對 Broker 的負載做出測試并通過圖表可視化檢視測試結果
MQTT Box 同樣采用了 Electron 跨平台技術,界面簡單直接,支援多個用戶端同時線上,但用戶端之間的切換、互發消息等互動還是有一定不便。MQTT Box 借助 Chrome 有很強大的跨平台特性,結合簡單的負載測試功能,是一款值得嘗試的 MQTT 用戶端工具。
mqtt-spy
mqtt-spy 是 Eclipse Paho 和 Eclipse IoT 的一部分,它通過直接啟動 JAR 檔案在 Java 8 和 JavaFX 之上運作,mqtt-spy 有一種很好的互動方式來展現基本的 MQTT釋出/訂閱機制。
項目位址:GitHub mqtt-spy
下載下傳位址:https://github.com/eclipse/paho.mqtt-spy/releases
mqtt-spy 具備以下特性:
- 支援 MQTT 和 MQTT over WebSocket
- 互動友善,可以同時釋出和訂閱,在不同頁籤連接配接多個 Broker
- 可以關閉 pub/sub視窗的不同區域(釋出,新訂閱,訂閱和消息),以便為目前使用的空間騰出空間
- 搜尋功能允許查找常用 MQTT 消息,支援将釋出/訂閱消息輸出到标準輸出或記錄到檔案中以供後續分析
mqtt-spy 沒有提供獨立的安裝包,使用前需要使用者自行安裝 Java 運作環境。但是啟動後 mqtt-spy 擁有友好的上手體驗,啟動引導功能讓人眼前一亮,MQTT 新手可以輕松的使用 mqtt-spy 連接配接到公共 MQTT Broker 進行探索。mqtt-spy 的功能界面略顯複雜,但熟悉每個部件的功能後它将成為開發調試利器。還有有一點不得不提的是 mqtt-spy 的性能和穩定性有所欠缺,也有可能是筆者使用的版本為最新 Beta 版,連接配接多個 Broker 後頻頻出現卡頓和假死。
MQTT Lens
MQTT Lens 是有一個 Chrome 拓展工具,可以通過 Chrome 網上應用商店安裝。MQTT Lens 界面非常簡潔,提供基礎的釋出訂閱功能。
下載下傳位址:Chrome Web Store
MQTT Lens 具備以下特性:
- 同時接受與多個經紀人的連接配接,采用不同顔色關聯
- 訂閱,釋出和檢視所有收到的消息的界面非常簡單且易于掌握
- 支援 MQTT 和 MQTT over WebSocket
MQTT Lens 足夠簡單,但是提供了基礎的 MQTT 和 MQTT over WebSocket 連接配接功能,可以快速滿足入門探索使用。
本文作者: EMQ X
原文連結:https://www.emqx.io/cn/blog/mqtt-client-tools
版權聲明: 本文為 EMQ 原創,轉載請注明出處