MQTT CLI是一个完全兼容MQTT 5.0和MQTT 3.1.1的命令行界面,用于MQTT客户端,基于HiveMQ MQTT客户端API。
HiveMQ CLI是由HiveMQ支持的开源项目。
可以在GitHub上查看。
功能特点:
- 支持所有MQTT 3.1.1和MQTT 5.0特性
- 所有MQTT命令的交互式、直接和详细模式
- 具有语法高亮、命令历史记录的Shell行为
- 能够同时连接不同Broker的多个MQTT客户端
- 快速Broker测试
- 从HiveMQ API端点导出信息
- 提供多种发行版
新闻动态
前提条件
运行MQTT CLI至少需要Java 8。
该CLI用Java 11实现,是运行此项目的首选版本。
Docker
您可以在支持Docker的任何操作系统上运行MQTT-CLI。要执行一个简单的命令,请使用以下语法:
docker run hivemq/mqtt-cli <您的命令>
要启动CLI的Shell-Mode,您需要在docker命令中添加-it标志:
docker run -it hivemq/mqtt-cli shell
Homebrew
对于Mac OS X和Linux系统,请使用Homebrew通过MQTT CLI Tap安装MQTT CLI。
brew install hivemq/mqtt-cli/mqtt-cli
注意:如果您遇到类似Java 1.8+是安装此配方所需的错误,请安装高于1.8的java版本。您可以使用brew install --cask zulu来安装最新版本的Azul Zulu OpenJDK。
注意:由于延迟问题可能会减慢Mac OS X下CLI的速度,请验证您在/etc/hosts下指定了127.0.0.1 localhost 您的电脑名称。您可以使用sudo sh -c "echo 127.0.0.1 localhost $(hostname) >> /etc/hosts"将此配置附加到您的主机文件中。
Windows Zip
下载Windows Zip文件并在您选择的位置解压缩。要执行MQTT CLI,只需用⊞ Win + R打开Windows命令提示符并执行cmd。导航到解压缩的MQTT CLI文件夹并执行mqtt
-cli.exe。
要快速启动shell,只需双击mqtt-cli-shell.cmd文件。
Debian包
如果您使用的是使用debian包的*nix操作系统,您可以通过wget或curl从发布页面下载MQTT CLI debian包,并使用sudo dpkg -i或sudo apt install安装该包:
wget https://github.com/hivemq/mqtt-cli/releases/download/v4.22.0/mqtt-cli-4.22.0.deb
sudo apt install ./mqtt-cli-4.22.0.deb
RPM包
对于Red Hat、Fedora、Mandriva、OpenSuse、CentOS等发行版,您可以在发布页面使用提供的rpm包。首选通过yum包管理器安装该包。要安装包,只需执行:
sudo yum install -y https://github.com/hivemq/mqtt-cli/releases/download/v4.22.0/mqtt-cli-4.22.0.rpm
从源代码构建
mqtt-cli使用Gradle进行构建。
为了能够执行集成测试,需要一个运行中的Docker环境
为了能够构建和测试本地镜像,需要安装GraalVM。您可以通过运行./gradlew installNativeImageTooling来设置。
要进行干净的构建,请执行以下命令:./gradlew clean build
这将运行单元测试,并将新的mqtt-cli-.jar编译到build/libs中。然后,您可以通过替换现有MQTT CLI安装的mqtt-cli-.jar来更新它。
build.gradle.kts文件包含了进一步的指令,用于构建特定平台的发行包。简单来说:
- 对于MacOS/Linux brew: ./gradlew buildBrewFormula
- 对于Debian包: ./gradlew buildDebianPackage
- 对于RPM包: ./gradlew buildRpmPackage
- 对于Windows安装程序: ./gradlew buildWindowsZip
- 构建本地docker镜像: ./gradlew jibDockerBuild
MQTT 发布命令说明
MQTT发布(publish)指令允许用户向一个或多个主题发送消息。
基本命令: mqtt publish
别名: mqtt pub
简单示例
命令 | 解释 |
---|---|
mqtt pub -t test -m "Hello" | 使用默认设置发布消息“Hello”至主题‘test’。 |
mqtt pub -t test1 -t test2 -m "Hello Tests" | 发布消息“Hello Tests”至主题‘test1’和‘test2’。 |
mqtt pub -t test -m "Hello" -h localhost -p 1884 | 将消息“Hello”发布至主题‘test’,目标为localhost:1884的代理服务器。 |
mqtt pub -t test -m:file payload.txt | 使用默认设置发布文件payload.txt中的消息至主题‘test’。 |
选项
发布选项:
选项 | 完整版本 | 解释 | 默认值 |
---|---|---|---|
-t | --topic | 要发布消息的MQTT主题。 | |
-m | --message | 将在主题上发布的消息。 | |
-m:file | --message-file | 包含要发布消息的文件。 | |
-m:empty | --message-empty | 设置消息为空载荷。 | |
-r | --[no-]retain | 消息是否保留。 | false |
-q | --qos | 定义服务质量等级。如果只指定了一个QoS,则将用于所有主题。你可以为每个主题定义特定的QoS级别。 | 0 |
-e | --messageExpiryInterval | 发布消息的生命周期(秒)。 | |
-ct | --contentType | 发布消息内容的描述。 | |
-cd | --correlationData | 发布消息的相关数据。 | |
-pf | --payloadFormatIndicator | 发布消息的载荷格式指示符。 | |
-rt | --responseTopic | 发布消息的响应消息主题名称。 | |
-up | --userProperty | 发布消息的用户属性。 |
连接选项:
回复