您的当前位置:首页正文

MQTT客户端工具

2024-02-19 来源:步旅网
MQTT客户端⼯具

前⾔

在学习和使⽤ MQTT 的过程中,⼀个得⼼应⼿的客户端⼯具可以极⼤的⽅便使⽤者进⾏ MQTT 特性的探索和功能组件的调试。来⾃世界各地的开发者们围绕不同操作系统、运⾏平台,开发出了许多针对 MQTT 协议的客户端测试⼯具。

这些客户端⼯具种类繁多,功能侧重点不尽相同,质量层次不齐,因此,对于初学者乃⾄ MQTT 专家来说,如何选择⼀个适⽤的 MQTT 客户端⼯具是⼀个难题。

本篇⽂章将尽可能的搜集整理,对市⾯上各类 MQTT 客户端⼯具做⼀个全⾯的测评以供读者参考。

MQTT 客户端⼯具需要具备的功能特点

MQTT 客户端⼯具常⽤于建⽴与 MQTT Broker 的连接,进⾏主题订阅、消息收发等操作。⼀个 MQTT 客户端⼯具的功能特点可以从以下⽅⾯评估:

每个使⽤环节中⼯具需要尽可能提供全⾯的参数配置能⼒、使⽤到 MQTT 的全部特性,以便⽤户应对任何使⽤场景、使⽤⽅式的模拟测试。这部分特性包括⽀持客户端认证,⽀持配置证书及多种加密⽅式连接,⽀持 MQTT 连接、发布、订阅过程中多项参数的配置,⽀持 MQTT 5 等;

在功能全⾯的基础上提升⽤户的交互便捷性;

提供其他拓展功能,如同时⽀持多个客户端连接、MQTT 协议调试;跨平台,不同操作系统下都可以使⽤

本⽂将结合每个客户端⼯具的特点,从以上⼏点进⾏测评介绍,参选的客户端⼯具如下:

Mosquito CLIMQTTXMQTT.fxMQTT Boxmqtt-spyMQTT Lens

Mosquito CLI

Mosquitto 是⼀个开源(EPL/EDL 许可证)的消息代理,Mosquitto 安装之后默认提供了 和 两个命令⾏ MQTT 客户端⼯具。项⽬地址:下载地址:

Mosquito CLI 有多个配置选项,⽀持 TLS 证书连接、通过代理服务器连接,⽀持 debug 模式,在 debug 模式下可以获取更详细的消息信息。

Mosquito CLI ⾜够轻量紧凑且便于安装,可以以多种连接⽅式并⾏的建⽴多个 MQTT 客户端,完成消息的发布/订阅测试。它的使⽤也⾮常简便,默认使⽤环境只需提供少许参数即可使⽤:

## 开启 DEBUG 模式订阅 testtopic/# 主题

wivwiv-mac:workspace emqtt$ mosquitto_sub -t \"testtopic/#\" -dClient mosqsub/66418-wivwiv-ma sending CONNECTClient 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 SUBACKSubscribed (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 的安装使⽤详见 官⽹。

MQTTX

是 EMQ 开发的跨平台可视化 MQTT 客户端⼯具,在 Apache License 2.0 协议下开源。项⽬地址:下载地址:

MQTTX 具备以下特性:

可以创建任何 MQTT Broker 连接

⽀持 MQTT/WebSocket 连接和 MQTT/TCP 连接⽀持订阅主题

⽀持消息的发送和接收

跨平台桌⾯,⽀持 Windows、MacOS 和 Linux

MQTTX 是最新推出的产品,采⽤了 Electron 跨平台技术,界⾯美观且资源占⽤较低。MQTTX 在交互上⼀改常见的单⼀客户端模式,按照Broker 配置来组织客户端信息,允许在同⼀份 Broker 配置下保存多个客户端信息;以消息聊天的交互形式收发消息,允许同时建⽴多个客户端连接并⾃由切换互相通信,有较好的交互性,⼤⼤提⾼了交互调试的效率。截⽌⽬前 MQTTX 发布了 v1.1.1 版本,后续更多功能还在开发中让我们拭⽬以待。

MQTT.fx

MQTT.fx 是 个⼈开发的、⽬前主流的 MQTT 客户端,可以快速验证是否可以与 IoT Hub 服务交互发布或订阅消息,MQTT.fx 适⽤ ApacheLicense 2.0 协议但并未提供源码。项⽬地址:未提供源码下载地址:

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 的测试场景中⽆法使⽤。

MQTT Box

MQTT Box 是 Sathya Vikram 个⼈开发的 MQTT 客户端⼯具,最初仅在 上使⽤,作为浏览器拓展安装使⽤, 后经重写开源成为桌⾯端跨平台独⽴软件。项⽬地址:

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发布/订阅机制。项⽬地址:

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 界⾯⾮常简洁,提供基础的发布订阅功能。下载地址:

MQTT Lens 具备以下特性:

同时接受与多个经纪⼈的连接,采⽤不同颜⾊关联

订阅,发布和查看所有收到的消息的界⾯⾮常简单且易于掌握⽀持 MQTT 和 MQTT over WebSocket

MQTT Lens ⾜够简单,但是提供了基础的 MQTT 和 MQTT over WebSocket 连接功能,可以快速满⾜⼊门探索使⽤。

因篇幅问题不能全部显示,请点此查看更多更全内容