MQTTX 1.10.0 发布:CLI高级文件管理与配置

news2024/11/15 10:03:49

MQTTX 1.10.0 版本现已发布!

在本次更新中,CLI 版本在文件管理和配置功能方面进行了显著增强。主要更新包括:支持从文件中读取和写入消息、高级配置选项、文本输出模式、以及改进的日志记录。此外,桌面版本现在支持数据库重建,以防止文件损坏引起的问题,并且能更好地处理大数据的展示。这些更新希望为所有 MQTTX 用户提供更加强大和用户友好的体验。

最新版本:https://mqttx.app/zh/downloads

CLI 中的文件管理

MQTTX 1.10.0 在 CLI 中引入了强大的文件读写功能。此功能可以无缝处理文件输入和输出的消息负载,从而在数据工作流中提供集成和自动化。

文件读取

注意:由于 MQTT 协议的限制,消息的载荷大小不得超过 256MB。在传输前,请验证你的 MQTT broker 的载荷大小限制。

使用 pub 命令

使用以下命令从文件读取消息:

mqttx pub -t topic --file-read path/to/file

--file-read 选项允许你直接从文件读取内容作为发布的载荷。这对于使用预定义的测试数据进行各种发布场景非常方便。

使用 bench pub 命令

--file-read 命令从文件中读取消息体,类似于简单的 pub 命令:

mqttx bench pub -c 10 -t topic --file-read path/to/file

利用 bench 命令的内置强大功能,您可以通过使用 --split 选项将文件内容分割到单独的消息中,以便发送不同的数据段。默认字符是 \n

例如,有一个包含以下内容的文件:

hello
world

您可以使用:

mqttx bench pub -c 10 -t topic --file-read path/to/file --split

如果文件是用逗号分隔的,将 --split 改为 ,

mqttx bench pub -c 10 -t topic --file-read path/to/file --split ','

最后还可以设置 -im 来定义发布消息的时间间隔。

文件写入

如果要将收到的消息写入到文件中,可以使用以下命令:

mqttx sub -t topic --file-write path/to/file

--file-write 选项会将每条消息追加到文件中,每条消息默认使用换行符 \n 分隔,这非常适合用于日志记录或累积文本数据。对于需要维持连续接收消息日志的应用程序来说,这个功能非常方便。

如果要更改分隔符,可以使用 --delimiter 选项。例如:

mqttx sub -t topic --file-write path/to/file --delimiter ','

文件保存

若要将每条单独的消息保存为一份单独的文件,请使用:

mqttx sub -t topic --file-save path/to/file

--file-save 选项将每条传入的消息保存为一个单独的文件。已有的文件将自动重新编号并保存,以防止覆盖。此功能对于需要存储单个消息以进行进一步处理或分析的应用程序非常方便。

例如,要将传入的消息保存到指定的目录:

mqttx sub -t topic --file-save /path/to/directory/message.txt

如果 /path/to/directory/message.txt 已经存在,新的消息将被保存为 message(1).txtmessage(2).txt 等。这样可以防止由于覆盖现有文件而导致的任何数据丢失。

请勿同时使用 --file-write 和 --file-save。

类型格式

文件传输也支持指定对应的文件格式来格式化消息。如果未指定,默认为纯文本(UTF-8)格式。可以使用 --format 选项对消息内容进行格式化以处理不同的数据格式:

mqttx pub -t topic --file-read path/to/file --format type
mqttx sub -t topic --file-save path/to/file --format type

支持输出到文件的数据格式包括 jsonbase64hexbinarycbor

为此,该版本还引入了一个新的 binary 格式来处理更常见的文件传输场景。通过指定二进制格式,MQTTX 收发时将处理和生成相应的二进制文件。

如果文件有以下扩展名,它将自动识别文件格式为二进制:

  • 图片: .png.jpg.jpeg.gif.bmp.ico.tif.tiff
  • 视频: .mp4.avi.mov.mkv.flv.wmv.mpeg.3gp
  • 音频: .mp3.wav.flac.aac.ogg.wma.m4a.m4p
  • 压缩: .zip.gz.rar.tar.7z.bz2.xz.jar
  • 二进制: .bin.exe.dll.so.dmg.iso.img
  • 文档: .pdf.epub

要手动指定二进制格式,使用:

mqttx pub -t topic --file-read path/to/file --format binary
mqttx sub -t topic --file-save path/to/file --format binary

CLI 配置文件

此版本引入了配置文件功能,它可以存储各种设置的默认值,为 MQTTX CLI 提供了简化和可定制的体验。初始化后,配置文件将存储在用户的主目录 $HOME/.mqttx-cli/config 中。

功能

配置文件包括用于控制界面和功能参数的设置。这些设置允许 MQTTX CLI 使用预定义的值,提高效率,避免需要反复输入信息。

默认:

  • output
    • text: 默认模式提供包含关键信息的简洁输出。
    • log: 显示带有日期和时间戳的详细日志输出。

MQTT:

  • host: 默认是 localhost。
  • port: 默认是 1883。
  • max_reconnect_times: 默认是 10。
  • username: 默认为空。
  • password: 默认为空。

默认部分中的 output 设置控制 CLI 的输出显示。用户可以根据自己的需要选择不同的模式。

如果命令行没有提供这些参数,MQTTX CLI 将使用 mqtt 部分中的配置文件中的值。host, port, username, 和 password

max_reconnect_times 控制重连尝试的次数。一旦到达设定的次数,连接将自动关闭,以防止无限制的重连。

如果不需要 usernamepassword 这样的配置项,它们可以从配置文件中省略。

初始化配置

默认情况下不提供配置文件。要创建或更新配置文件,运行 init 命令。此命令将提示你输入所需的值:

mqttx init
? Select MQTTX CLI output mode Text
? Enter the default MQTT broker host broker.emqx.io
? Enter the default MQTT port 1883
? Enter the maximum reconnect times for MQTT connection 5
? Enter the default username for MQTT connection authentication admin
? Enter the default password for MQTT connection authentication ******
Configuration file created/updated at /Users/.mqttx-cli/config

配置文件示例

[default]
output = text
[mqtt]
host = broker.emqx.io
port = 1883
max_reconnect_times = 5
username = admin
password = public

界面改进

配置文件中的 output 设置提供了两种模式:

  • 文本模式: 提供简洁清晰的输出,只包含关键信息,便于阅读和理解。

    mqttx conn
    ✔ Connected
    
  • 日志模式: 此模式显示带有日期和时间戳的详细日志输出,有助于记录和调试。

    mqttx conn
    [5/24/2024] [11:26:17 AM] › …  Connecting...
    [5/24/2024] [11:26:17 AM] › ✔  Connected
    

用户可以通过选择适当的输出模式,根据自己的工作流和偏好定制 MQTTX CLI。

桌面版本白屏问题

我们对桌面版本中白屏问题的报告进行了调查,找出了两个主要原因:数据库文件损坏和处理大消息负载时的性能问题。为解决这些问题,我们对 MQTTX 进行了优化。

数据库重建

SQLite 数据库文件损坏可能由多种因素引起,特别是在软件升级后:

  1. 架构改变不兼容:在升级过程中改变数据库结构,但没有正确迁移旧数据。
  2. 升级中断:软件更新期间出现意外中断导致数据库文件不完整。
  3. 竞态条件:并发访问没有正确管理,导致写入冲突。
  4. 升级脚本出错:更新期间数据库脚本执行错误影响数据完整性。
  5. 磁盘空间不足:更新期间由于空间不足阻止完整的数据写入。
  6. 文件系统或硬件问题:底层存储问题导致文件损坏。

当出现这些问题时,用户无法打开 MQTTX。新版本的 MQTTX 检测到数据库文件损坏时,会显示出一个数据库重建页面。用户可以点击重建按钮来修复损坏的数据库文件并重新初始化数据。

注意:数据库重建后,所有本地数据将会丢失。

数据库重建

另一个问题是由大型消息负载造成的性能损失。虽然通常情况下的 MQTT 消息负载通常在 1MB 以下,但最大也可达 256 MB。因此当用户发送大文件时,MQTTX 在渲染这些消息时可能会导致用户界面冻结或崩溃,结果显示白屏。

在新版本中,我们添加了一个数据阈值。当负载大小超过 512KB 时,MQTTX 只会显示消息内容的一部分。用户可以点击“显示更多”以查看完整消息。此外,用户还可以使用“保存到本地”按钮将大型消息保存到本地系统,以便使用其他应用程序查看。

点击查看更多

保存到本地

这些改进确保 MQTTX 可以更有效地处理大型负载,防止用户界面冻结,并提高整体用户体验。

Web 版更新

通过 env 文件支持 BASE_URL 配置

如果您需要进行个性化设置,如修改默认连接路径、部署路径或输出路径,您可以在 web/.envweb/.env.docker 文件中进行相应修改。这两个文件对应不同的打包需求,您可以根据实际情况进行修改。

配置项描述
VUE_APP_PAGE_TITLE浏览器标题栏显示的标题
VUE_APP_PAGE_DESCRIPTION用于 SEO 的简洁页面描述
VUE_APP_DEFAULT_HOSTMQTT broker 服务器连接的默认地址
BASE_URL应用部署的根 URL,有助于构建链接和路由
VUE_APP_OUTPUT_DIR编译后的构建文件将被放置的目录

这些更新旨在提供更灵活、用户友好的体验,使您可以根据需求定制 MQTTX 网页版设置。

重要更新

旧命令新命令
mqttx conn -h broker.emqx.io -p 1883 --savemqttx conn -h broker.emqx.io -p 1883 --save-options
mqttx conn --config /Users/mqttx-cli-config.jsonmqttx conn --load-options /Users/mqttx-cli-options.json

在此次更新中,我们将原来的 --config 参数更改为了 --options 参数。此变更更好地反映了这些参数的目的,即保存和加载常用的命令参数。

  • -so, --save-options:将参数保存到本地配置文件,支持 JSON 和 YAML 格式。默认路径是 ./mqttx-cli-options.json
  • -lo, --load-options:从本地配置文件加载参数,支持 JSON 和 YAML 格式。默认路径是 ./mqttx-cli-options.json

其他更新

新功能和改进

  • 自动重新订阅提示:订阅对话框现在增加了自动重新订阅提示。在进行订阅时,您可以看到是否启用了自动重新订阅功能。
  • GPT-4o 支持:在 MQTTX Copilot 中增加了对 GPT-4o 的支持,为您的 MQTTX 体验带来先进的 AI 能力。

错误修复

  • 版本更新对话框:修复了版本更新对话框,确保其适当适应暗黑模式,并在不同主题中提供一致的用户体验。
  • 主题过滤:解决了主题过滤的问题,确保主题的准确和可靠过滤。
  • 日志改进:增强了日志格式,并通过灰色显示输出元信息并改进了 bench sub 日志,使日志更易读,对于调试更有用。
  • 订阅错误:修复了处理多主题时的订阅错误逻辑,确保更流畅和可靠的订阅。
  • CLI 发布失败处理:改进了 CLI 发布失败的重新连接逻辑,确保 CLI 更优雅地处理发布失败并尝试重新连接。

这些更新着重于改善用户体验,增强功能,并修复关键错误,以确保 MQTTX 的更顺畅和可靠的操作。

未来规划

  • Payload 图表可视化增强 - MQTTX Viewer
    • 主题树视图:增强主题的组织和可视化。
    • 差异视图:轻松比较不同的消息或负载。
    • 仪表板视图:提供可定制的 MQTT 活动概览,以获取个性化洞见。
    • JSON 视图:改进 JSON 格式数据的处理和显示。
    • 系统主题视图:专门针对系统相关 MQTT 主题的视图。
  • 支持可配置的断开连接属性(MQTT 5.0):通过自定义断开连接设置来增强连接管理。
  • 物联网场景数据模拟:将此功能带到桌面客户端,以简化物联网场景测试。
  • Sparkplug B 支持:扩展 MQTTX 功能,包括对 Sparkplug B 的特殊支持。
  • QoS 0 消息存储优化:提供可配置选项,减少存储空间使用。
  • MQTT GUI 调试功能:帮助调试 MQTT 通信的新功能。
  • 插件功能:引入支持协议扩展(如 CoAP 和 MQTT-SN)的插件系统。
  • Avro 消息格式支持:增加对 Avro 消息格式的编码和解码能力。
  • 脚本测试自动化(流程):简化自动化测试工作流的创建和管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1858159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue父组件mounted执行完后再执行子组件mounted

// 创建地图实例 this.map new BMap.Map(‘map’) } } ... 现在这样可能会报错,因为父组件中的 map 还没创建成功。必须确保父组件的 map 创建完成,才能使用 this.$parent.map 的方法。 那么,现在的问题是:如何保证父组件 mo…

Twinkle Tray:屏幕亮度控制更智能

名人说:一点浩然气,千里快哉风。 ——苏轼 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、软件介绍1、Twinkle Tray2、核心特点 二、下载安装1、下载2、安装 三、使用方法 很高兴你打开…

【数据结构与算法】详解循环队列:基于数组实现高效存储与访问

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​ 目录 一、引言 🍃队列的概念 🍃循环队列的概念 🍃为什…

【Linux】Centos升级到国产操作系统Openeuler

一、前言 迁移工具采用Openeuler官网提供的x2openEuler工具,是一款将源操作系统迁移到目标操作系统的迁移工具套件,具有批量化原地升级能力,当前支持将源 OS 升级至 openEuler 20.03。 官网链接:openEuler迁移专区 | 迁移专区首页…

陀螺仪LSM6DSV16X与AI集成(8)----MotionFX库解析空间坐标

陀螺仪LSM6DSV16X与AI集成.8--MotionFX库解析空间坐标 概述视频教学样品申请源码下载开启CRC串口设置开启X-CUBE-MEMS1设置加速度和角速度量程速率选择设置FIFO速率设置FIFO时间戳批处理速率配置过滤链初始化定义MotionFX文件卡尔曼滤波算法主程序执行流程lsm6dsv16x_motion_fx…

问题:以下哪个不是报名“天天特价“活动必须具有的条件( ) #其他#其他#媒体

问题:以下哪个不是报名"天天特价"活动必须具有的条件( ) A、店铺信誉达到一钻 B、开通淘金币抵扣 C、宝贝月销量达到10个 D、店铺同类产品要达到10个以上 参考答案如图所示

重学java 84.Java枚举

那些你暗自努力的时光,终究会照亮你前行的路 —— 24.6.24 一、枚举介绍(开发中表示状态) 1.概述: 五大引用数据类型:类型、数组、接口、注解、枚举 2.定义: public enum 枚举类名{} 所有的枚举类父类…

Excel 宏录制与VBA编程 —— 12、日期相关

代码1 - 获取当前时间日期信息 代码2 - 时间日期格式 代码3 - 时间日期计算 代码4 - 时间日期案例 关注 笔者 - jxd

数据库断言

在数据库验证断言 目的:不能相信接口返回结果,通过到数据库检验可知接口返回结果是否真的正确 如何校验:代码与mymql建立网络连接,操作数据库,断开连接 代码:java操作数据库 pom文件配置依赖 步骤&…

作为一名车载测试工程师,核心能力是什么?

最近经常有人会问我,说XX培训机构专门培训车载测试,我要去,而且薪资很高,现在是风口,你是否也听过这样的销售话语? 然后进去培训2-3个月,包括上车测试,后来进去后发现原来真实的场景…

端到端的全人体关键点检测:手把手实现从YOLOPose到YOLOWhole

目录 一、搭建yolopose平台二、迁移训练任务2.1 任务拓展数据准备训练模型测试训练模型结论To-do list: 1、数据集,COCO-whole, Halpe;下载好; 2、模型搭建,先基于yolov8来检测人体姿态,17个点; 3、迁移任务,17个点,把它拓展到133个点; 4、优化133个点的模型; 一、搭…

解释一下在React中,什么是“渲染Props”模式,以及它与使用Hooks之前的状态管理有何不同?

在React中,"渲染Props"模式是一种组件设计模式,它通过将一个函数作为prop传递给组件,允许父组件定义子组件的渲染逻辑。这种模式使得组件更加灵活和可复用,因为它们可以接受一个渲染函数来决定如何渲染自己。 渲染Prop…

同元软控智能电动汽车数字化解决方案亮相CICV 2024

2024年6月18日-20日,由中国汽车工程学会、国家智能网联汽车创新中心、清华大学车辆与运载学院、清华大学智能绿色车辆与交通全国重点实验室举办的第十一届国际智能网联汽车技术年会(CICV 2024)在北京召开。苏州同元软控信息技术有限公司&…

【zip密码】忘了zip密码,怎么办?

Zip压缩包设置了密码,解压的时候就需要输入正确对密码才能顺利解压出文件,正常当我们解压文件或者删除密码的时候,虽然方法多,但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么,忘记了zip压缩包的密…

Django教程(002):模板语法的使用

目录 1 字符串2 列表3 字典4 列表中是字典5 if语句6 案例:使用爬虫爬取联通新闻并在页面渲染 模板语法本质上:在HTML中写一些占位符,由数据对这些占位符进行替换和处理。模板语法主要是方便对方法返回的数据在前端进行渲染,这些数…

什么是车载测试?车载测试怎么学!

1、车载测试是什么? 车载测试分很多种,有软件测试、硬件测试、性能测试、功能测试等等,每一项测试的内容都不一样,我们所说的车载测试主要指的是汽车软件的功能测试,也就是针对汽车实现的某一个功能,而进行…

tp5学习基本控制器和视图

1 文件结构 正在上传…重新上传取消 application 主要操作目录 extend 扩展 public 入口文件 runtime 运行时文件 thinkphp 核心代码 vendor 三方扩展 2 public/index.php 解析 正在上传…重新上传取消 .htaccess Apache 可写文件 index.php 主目录 router.php 路由文件 3 inde…

【Oracle APEX开发小技巧3】Oracle apex pl/sql动态拼接的注意点和技巧

【开发小技巧】在开发过程中使用动态拼接进行sql查询及需要注意的点 在开发过程中,我们经常需要根据不同的条件执行不同的SQL查询。例如,当权限类型为0(非超级管理员权限)时,我们只能查询特定平台的数据;而…

MySQL----undo log回滚日志原理、流程以及与redo log比较

回滚日志 回滚日志,保存了事务发生之前的数据的一个版本,用于事务执行时的回滚操作,同时也是实现多版本并发控制(MVCC)下读操作的关键技术。 如何理解Undo Log 事务需要保证原子性,也就是事务中的操作要…

c++ 正则匹配得使用

标头&#xff1a;#include <regex> 相关函数&#xff1a; regex_match regex_replace regex_search 名称描述regex_match测试正则表达式是否与整个目标字符串相完全匹配。regex_replace替换匹配正则表达式。regex_search搜索正则表达式匹配项。 1. regex_search 成功搜…