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 ,详细文档请访问 官方文档

相关文章
相关标签/搜索