Skip to content

Latest commit

 

History

History
426 lines (329 loc) · 26.6 KB

README-CN.md

File metadata and controls

426 lines (329 loc) · 26.6 KB

MQTTX Logo

MQTT X 命令行工具

GitHub Release Support Platforms build packages Total Downloads Docker Slack Discord 社区 YouTube Twitter

English | 简体中文


MQTT X CLI 是一款开源的 MQTT 5.0 命令行客户端工具,也是命令行上的 MQTT X,旨在帮助开发者在不需要使用图形化界面的基础上,也能更快的开发和调试 MQTT 服务与应用。

MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于 发布/订阅 范式的“轻量级”消息协议,旨在用于受限设备和低带宽,高延迟或不可靠的网络,由 IBM 发布。

功能预览

mqttx-preview

文档

关于介绍、安装和使用,请参阅 MQTT X CLI 文档,下面是一个快速入门指南。

安装

macOS

下载二进制文件并快速安装最新的 MQTT X CLI 稳定版到 macOS 系统上。

注意:请注意区分当前系统环境的 CPU 架构

Intel Chip

curl -LO https://www.emqx.com/zh/downloads/MQTTX/v1.9.1/mqttx-cli-macos-x64
sudo install ./mqttx-cli-macos-x64 /usr/local/bin/mqttx

Apple Silicon

curl -LO https://www.emqx.com/zh/downloads/MQTTX/v1.9.1/mqttx-cli-macos-arm64
sudo install ./mqttx-cli-macos-arm64 /usr/local/bin/mqttx

Homebrew

brew install emqx/mqttx/mqttx-cli

Linux

下载二进制文件并快速安装最新的 MQTT X CLI 稳定版到 Linux 系统上。

注意:请注意区分当前系统环境的 CPU 架构

x86-64

curl -LO https://www.emqx.com/zh/downloads/MQTTX/v1.9.1/mqttx-cli-linux-x64
sudo install ./mqttx-cli-linux-x64 /usr/local/bin/mqttx

ARM64

curl -LO https://www.emqx.com/zh/downloads/MQTTX/v1.9.1/mqttx-cli-linux-arm64
sudo install ./mqttx-cli-linux-arm64 /usr/local/bin/mqttx

Windows

Windows 用户请到 MQTT X 的发布页面内,找到对应的系统架构的 exe 包,手动下载后使用

NPM

npm install mqttx-cli -g

Docker

docker pull emqx/mqttx-cli

docker run -it --rm emqx/mqttx-cli

其它平台

从 MQTT X 的发布页面内,下载对应的二进制文件。

使用

在安装完成后,可在终端直接运行 mqttx 命令:

快速使用

Connect

mqttx conn -h 'broker.emqx.io' -p 1883 -u 'admin' -P 'public'

Subscribe

mqttx sub -t 'hello' -h 'broker.emqx.io' -p 1883

Publish

mqttx pub -t 'hello' -h 'broker.emqx.io' -p 1883 -m 'from MQTTX CLI'

Benchmark

# Connect Benchmark
mqttx bench conn -c 5000

# Subscribe Benchmark
mqttx bench sub -c 5000 -t bench/%i

# Publish Benchmark
mqttx bench pub -c 5000 -t bench/%i

参数介绍

mqttx --help
参数 描述
-v, --version 输出当前 MQTT X CLI 的版本号
-h, --help 展示 mqttx 命令的帮助信息
命令 描述
check 检查更新
conn 创建一个连接并连接到 MQTT Broker
pub 向主题发布一条消息
sub 订阅一个或多个主题
bench MQTT 性能测试

连接

mqttx conn --help
参数 描述
-V, --mqtt-version <5/3.1.1/3.1> MQTT 版本,默认为 5
-h, --hostname MQTT Broker 的 Host 地址,默认为 localhost
-p, --port MQTT Broker 的端口号
-i, --client-id 客户端 ID
--no-clean 取消 clean session 标志位,默认为 true
-k, --keepalive MQTT 的 Keep Alive,默认为 30
-u, --username 连接到 MQTT Broker 的用户名
-P, --password 连接到 MQTT Broker 的密码
-l, --protocol 连接时的协议,mqtt 或 mqtts,默认为 mqtt
--key key 文件的路径
--cert cert 文件的路径
--ca ca 证书的文件路径
--insecure 取消服务器的证书校验
-rp, --reconnect-period 自动重连的间隔时间,通过设置为 0 来禁用自动重连,默认为 1000ms
--maximun-reconnect-times 最大重连次数,默认为 10
-up, --user-properties <USERPROPERTIES...> MQTT 5.0 用户属性,例如:-up "name: mqttx cli"
-Wt, --will-topic 遗嘱消息的 Topic
-Wm, --will-message 遗嘱消息的 Payload
-Wq, --will-qos <0/1/2> 遗嘱消息的 QoS
-Wr, --will-retain 发送的遗嘱消息为保留消息,默认为 false
-Wd, --will-delay-interval 遗嘱消息延迟间隔,单位为秒
-Wpf, --will-payload-format-indicator 遗嘱消息是否为UTF-8编码的字符数据
-We, --will-message-expiry-interval 遗嘱信息的有效期,单位为秒
-Wct, --will-content-type 遗嘱消息内容的描述
-Wrt, --will-response-topic 响应信息的主题名称
-Wcd, --will-correlation-data 响应信息的关联数据
-Wup, --will-user-properties <USERPROPERTIES...> 遗嘱消息的自定义用户属性
-se, --session-expiry-interval 会话过期间隔,单位为秒
--rcv-max, --receive-maximum 接收消息的最大值
--maximum-packet-size 客户端愿意接受的最大数据包大小
--topic-alias-maximum 主题别名的最大值
--req-response-info 客户端要求服务器提供的响应信息
--no-req-problem-info 客户端向服务器请求问题信息
--save [PATH] 将参数保存到本地配置文件中,文件支持 json 和 yaml 格式,默认路径为 ./mqttx-cli-config.json
--config [PATH] 从本地配置文件加载参数,文件支持 json 和 yaml 格式,默认路径为 ./mqttx-cli-config.json
--help 展示 conn 命令的帮助信息

订阅

mqttx sub --help
参数 描述
-V, --mqtt-version <5/3.1.1/3.1> MQTT 版本,默认为 5
-h, --hostname MQTT Broker 的 Host 地址,默认为 localhost
-p, --port MQTT Broker 的端口号
-i, --client-id 客户端 ID
-q, --qos <0/1/2> 消息的 QoS,默认为 0
--no-clean 取消 clean session 标志位,默认为 true
-t, --topic 需要订阅的 Topic
-k, --keepalive MQTT 的 Keep Alive,默认为 30
-u, --username 连接到 MQTT Broker 的用户名
-P, --password 连接到 MQTT Broker 的密码
-l, --protocol 连接时的协议,mqtt 或 mqtts,默认为 mqtt
-nl, --no_local MQTT 5.0 订阅选项中的 no local 标识
-rap, --retain-as-published MQTT 5.0 订阅选项中的 retain as published 标识
-rh, --retain-handling <0/1/2> MQTT 5.0 订阅选项中的 retain handling 标识
--key key 文件的路径
--cert cert 文件的路径
--ca ca 证书的文件路径
--insecure 取消服务器的证书校验
-rp, --reconnect-period 自动重连的间隔时间,通过设置为 0 来禁用自动重连,默认为 1000ms
--maximun-reconnect-times 最大重连次数,默认为 10
-up, --user-properties <USERPROPERTIES...> MQTT 5.0 用户属性,例如:-up "name: mqttx cli"
-f, --format 消息格式化类型,支持 base64、json、hex
-v, --verbose 在接收到的 Payload 前显示当前 Topic
--output-mode <default/clean> 选择默认或简洁模式,简洁模式会输出完整的数据包,允许用户使用 jq 这类工具自由管理输出
-Wt, --will-topic 遗嘱消息的 Topic
-Wm, --will-message 遗嘱消息的 Payload
-Wq, --will-qos <0/1/2> 遗嘱消息的 QoS
-Wr, --will-retain 发送的遗嘱消息为保留消息,默认为 false
-Wd, --will-delay-interval 遗嘱消息延迟间隔,单位为秒
-Wpf, --will-payload-format-indicator 遗嘱消息是否为UTF-8编码的字符数据
-We, --will-message-expiry-interval 遗嘱信息的有效期,单位为秒
-Wct, --will-content-type 遗嘱消息内容的描述
-Wrt, --will-response-topic 响应信息的主题名称
-Wcd, --will-correlation-data 响应信息的关联数据
-Wup, --will-user-properties <USERPROPERTIES...> 遗嘱消息的自定义用户属性
-se, --session-expiry-interval 会话过期间隔,单位为秒
-si, --subscription-identifier 订阅标识符
--rcv-max, --receive-maximum 接收消息的最大值
--maximum-packet-size 客户端愿意接受的最大数据包大小
--topic-alias-maximum 主题别名的最大值
--req-response-info 客户端要求服务器提供的响应信息
--no-req-problem-info 客户端向服务器请求问题信息
-Cup, --conn-user-properties <USERPROPERTIES...> MQTT 5.0 的连接用户属性(例如,-Cup "name: mqttx cli")
--save [PATH] 将参数保存到本地配置文件中,文件支持 json 和 yaml 格式,默认路径为 ./mqttx-cli-config.json
--config [PATH] 从本地配置文件加载参数,文件支持 json 和 yaml 格式,默认路径为 ./mqttx-cli-config.json
--help 展示 sub 命令的帮助信息

发布

mqttx pub --help
参数 描述
-V, --mqtt-version <5/3.1.1/3.1> MQTT 版本,默认为 5
-h, --hostname MQTT Broker 的 Host 地址,默认为 localhost
-p, --port MQTT Broker 的端口号
-i, --client-id 客户端 ID
-q, --qos <0/1/2> 消息的 QoS,默认为 0
--no-clean 取消 clean session 标志位,默认为 true
-t, --topic 需要发布的 Topic
-m, --message 需要发布的 Payload 消息
-r, --retain 设置发送消息为 Retain 消息,默认为 fasle
-s, --stdin 从 stdin 中读取信息体
-M, --multiline 可以通过多行发布多条消息
-u, --username 连接到 MQTT Broker 的用户名
-P, --password 连接到 MQTT Broker 的密码
-l, --protocol 连接时的协议,mqtt 或 mqtts,默认为 mqtt
--key key 文件的路径
--cert cert 文件的路径
--ca ca 证书的文件路径
--insecure 取消服务器的证书校验
-rp, --reconnect-period 自动重连的间隔时间,通过设置为 0 来禁用自动重连,默认为 1000ms
--maximun-reconnect-times 最大重连次数,默认为 10
-up, --user-properties <USERPROPERTIES...> MQTT 5.0 用户属性,例如:-up "name: mqttx cli"
-pf, --payload-format-indicator 发布信息的有效载荷格式指标
-e, --message-expiry-interval 发布信息的有效期,单位为秒
-ta, --topic-alias 主题别名,识别主题的值,而不是使用主题名称
-rt, --response-topic 作为响应信息的主题名称
-cd, --correlation-data 请求信息的发送者在收到响应信息时用来识别是哪个请求的对比数据
-si, --subscription-identifier 订阅标识符
-ct, --content-type 对发布信息内容的描述
-Wt, --will-topic 遗嘱消息的 Topic
-Wm, --will-message 遗嘱消息的 Payload
-Wq, --will-qos <0/1/2> 遗嘱消息的 QoS
-Wr, --will-retain 发送的遗嘱消息为保留消息,默认为 false
-Wd, --will-delay-interval 遗嘱消息延迟间隔,单位为秒
-Wpf, --will-payload-format-indicator 遗嘱消息是否为UTF-8编码的字符数据
-We, --will-message-expiry-interval 遗嘱信息的有效期,单位为秒
-Wct, --will-content-type 遗嘱消息内容的描述
-Wrt, --will-response-topic 响应信息的主题名称
-Wcd, --will-correlation-data 响应信息的关联数据
-Wup, --will-user-properties <USERPROPERTIES...> 遗嘱消息的自定义用户属性
-se, --session-expiry-interval 会话过期间隔,单位为秒
--rcv-max, --receive-maximum 接收消息的最大值
--maximum-packet-size 客户端愿意接受的最大数据包大小
--topic-alias-maximum 主题别名的最大值
--req-response-info 客户端要求服务器提供的响应信息
--no-req-problem-info 客户端向服务器请求问题信息
-Cup, --conn-user-properties <USERPROPERTIES...> MQTT 5.0 的连接用户属性(例如,-Cup "name: mqttx cli")
--save [PATH] 将参数保存到本地配置文件中,文件支持 json 和 yaml 格式,默认路径为 ./mqttx-cli-config.json
--config [PATH] 从本地配置文件加载参数,文件支持 json 和 yaml 格式,默认路径为 ./mqttx-cli-config.json
--help 展示 pub 命令的帮助信息

性能测试

性能测试命令与普通命令参数基本相同,以下仅列出新增或有变化的参数

连接性能测试

mqttx bench conn --help
参数 描述
-c, --count 连接数量,默认为 1000
-i, --interval 创建连接的间隔时间,默认为 10ms
-I, --client-id 客户端 ID,支持 %i (索引) 占位符

订阅性能测试

mqttx bench sub --help
参数 描述
-c, --count 连接数量,默认为 1000
-i, --interval 创建连接的间隔时间,单位为毫秒,默认为 10ms
-I, --client-id 客户端 ID,支持 %i (索引) 占位符
-t, --topic <TOPIC...> 需要订阅的 Topic, 支持 %u (用户名), %c (客户端 ID), %i (索引) 占位符
-v, --verbose 打印接收到的历史消息数量与消息速率

发布性能测试

mqttx bench pub --help
参数 描述
-c, --count 连接数量,默认为 1000
-i, --interval 创建连接的间隔时间,单位为毫秒,默认为 10ms
-im, --message-interval 发布消息的间隔时间,单位为毫秒,默认为 1000ms
-I, --client-id 客户端 ID,支持 %i (索引) 占位符
-t, --topic <TOPIC...> 需要订阅的 Topic, 支持 %u (用户名), %c (客户端 ID), %i (索引) 占位符
-v, --verbose 打印发送出的历史消息数量与消息速率
-s, --stdin 从 stdin 中读取信息体
-M, --multiline 可以通过多行发布多条消息

与 EMQX 更好的合作

MQTT X 为连接测试 EMQX 等 MQTT 消息服务器而生,一键式的连接方式和简洁的图形界面可以帮助您快速连接到 EMQX 或 EMQX Cloud 调试并探索其功能特性。

注册 EMQX Cloud 可以享受 14 天免费试用

现在就本地下载并安装 EMQX

社区

  • 访问 EMQ 问答社区 以获取帮助,也可以分享您的想法或项目。
  • 添加小助手微信号 emqmkt,加入 EMQ 微信技术交流群。
  • 加入我们的 Discord,参于实时讨论。
  • 关注我们的 bilibili,获取最新物联网技术分享。
  • 关注我们的 微博Twitter,获取 EMQ 最新资讯。

开发

Node 环境的推荐版本:

  • v16.*.*
# 克隆项目
git clone [email protected]:emqx/MQTTX.git

# 安装依赖
cd MQTTX/cli
yarn install

# 编译和热重载以进行开发
yarn run dev

# 编译和压缩以构建生产版本
yarn run build

构建成功后,会在 dist 目录里出现构建成功的相应的文件,需要在 Node.js 环境中使用。

如果需要打包一个二进制可执行文件,请参考以下命令:

# 全局安装 pkg
npm install pkg -g

# 构建二进制可执行文件
pkg package.json

构建成功后,在 release 目录里可以看到对应各系统的二进制可执行文件了。

贡献

请确保在发出 PR 请求前, 已经仔细阅读过了贡献指南

技术栈

License

Apache License 2.0, see LICENSE.