MQTT 客戶端工具

前言

在學習和使用 MQTT 的過程當中,一個駕輕就熟的客戶端工具能夠極大的方便使用者進行 MQTT 特性的探索和功能組件的調試。來自世界各地的開發者們圍繞不一樣操做系統、運行平臺,開發出了許多針對 MQTT 協議的客戶端測試工具。php

這些客戶端工具種類繁多,功能側重點不盡相同,質量層次不齊,所以,對於初學者乃至 MQTT 專家來講,如何選擇一個適用的 MQTT 客戶端工具是一個難題。html

本篇文章將盡量的蒐集整理,對市面上各種 MQTT 客戶端工具作一個全面的測評以供讀者參考。git

MQTT 客戶端工具須要具有的功能特色

MQTT 客戶端工具經常使用於創建與 MQTT Broker 的鏈接,進行主題訂閱、消息收發等操做。一個 MQTT 客戶端工具的功能特色能夠從如下方面評估:github

  • 每一個使用環節中工具須要儘量提供全面的參數配置能力、使用到 MQTT 的所有特性,以便用戶應對任何使用場景、使用方式的模擬測試。這部分特性包括支持客戶端認證,支持配置證書及多種加密方式鏈接,支持 MQTT 鏈接、發佈、訂閱過程當中多項參數的配置,支持 MQTT 5 等;
  • 在功能全面的基礎上提高用戶的交互便捷性;
  • 提供其餘拓展功能,如同時支持多個客戶端鏈接、MQTT 協議調試;
  • 跨平臺,不一樣操做系統下均可以使用

本文將結合每一個客戶端工具的特色,從以上幾點進行測評介紹,參選的客戶端工具以下:web

  • Mosquito CLI
  • MQTTX
  • MQTT.fx
  • MQTT Box
  • mqtt-spy
  • MQTT Lens

Mosquito CLI

Mosquitto 是一個開源(EPL/EDL 許可證)的消息代理,Mosquitto 安裝以後默認提供了 mosquitto_pubmosquitto_sub 兩個命令行 MQTT 客戶端工具。chrome

項目地址:Github Mosquitto瀏覽器

下載地址:Mosquitto 官網 bash

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 配置下保存多個客戶端信息;以消息聊天的交互形式收發消息,容許同時創建多個客戶端鏈接並自由切換互相通訊,有較好的交互性,大大提升了交互調試的效率。

1.png

截止目前 MQTTX 發佈了 v1.1.1 版本,後續更多功能還在開發中讓咱們拭目以待。

MQTT.fx

MQTT.fx 是 Jens Deters 我的開發的、目前主流的 MQTT 客戶端,能夠快速驗證是否能夠與 IoT Hub 服務交互發布或訂閱消息,MQTT.fx 適用 Apache License 2.0 協議但並未提供源碼。

項目地址:未提供源碼

下載地址:MQTT.FX

MQTT fx 具有如下特性:

  • 預約義消息模板
  • 經過系統主題 $SYS 獲取 Broker 狀態(支持 HiveMQ 和 Mosquitto)
  • 記憶最近使用主題的
  • 經過 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 的測試場景中沒法使用。

2.png

MQTT Box

MQTT Box 是 Sathya Vikram 我的開發的 MQTT 客戶端工具,最初僅在 Chrome 上使用,做爲瀏覽器拓展安裝使用, 後經重寫開源成爲桌面端跨平臺獨立軟件。

項目地址:GitHub MQTTBox

下載地址:http://workswithweb.com/mqttb...

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 客戶端工具。

3.png

mqtt-spy

mqtt-spy 是 Eclipse Paho 和 Eclipse IoT 的一部分,它經過直接啓動 JAR 文件在 Java 8 和 JavaFX 之上運行,mqtt-spy 有一種很好的交互方式來展示基本的 MQTT發佈/訂閱機制。

項目地址:GitHub mqtt-spy

下載地址:https://github.com/eclipse/pa...

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 後頻頻出現卡頓和假死。

4.png

5.png

MQTT Lens

MQTT Lens 是有一個 Chrome 拓展工具,能夠經過 Chrome 網上應用商店安裝。MQTT Lens 界面很是簡潔,提供基礎的發佈訂閱功能。

下載地址:Chrome Web Store

MQTT Lens 具有如下特性:

  • 同時接受與多個經紀人的鏈接,採用不一樣顏色關聯
  • 訂閱,發佈和查看全部收到的消息的界面很是簡單且易於掌握
  • 支持 MQTT 和 MQTT over WebSocket

MQTT Lens 足夠簡單,可是提供了基礎的 MQTT 和 MQTT over WebSocket 鏈接功能,能夠快速知足入門探索使用。


更多信息請訪問咱們的官網 emqx.io,或關注咱們的開源項目 github.com/emqx/emqx ,詳細文檔請訪問 官方文檔

相關文章
相關標籤/搜索