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

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 消息格式的编码和解码能力。
  • 脚本测试自动化(流程):简化自动化测试工作流的创建和管理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

情感搞笑聊天记录视频:AI自动化生成技术,操作简单,教程+软件

在数字化时代,内容创作已成为吸引观众、传递信息的重要手段。随着人工智能技术的飞速发展,AI自动生成视频为创作者提供了新的工具和可能性。本文将介绍如何利用AI技术,通过情感搞笑聊天记录视频,在视频号上实现内容的自动化生成&a…

windows系统上nginx搭建文件共享

1、下载windows版nginx 下载地址 2、配置nginx 编辑nginx.conf配置文件 在http模块下添加这个参数 underscores_in_headers on;#修改location内容,共享哪个文件夹,就写哪个文件夹,最后一定要跟上/,否则无法访问 location / {…

艺术签名生成工具哪个好?5个工具定制个性化签名

在追求个性化的现代社会,艺术签名已经成为一种时尚和趋势,越来越多的人开始关注和尝试学习如何设计自己的艺术签名。 这不仅是一种表达自我的方式,也是一种展现个性和独特性的方式。今天让我们一起探索5款艺术签名在线生成工具,让…

【Python系列】FastAPI 中的路径参数和非路径参数解析问题

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

边缘计算是什么?天拓四方

边缘计算,作为一种分布式计算模型,正在逐步改变我们对数据处理和计算的传统认知。其核心思想是将数据处理和计算资源放置在接近数据产生源头的边缘设备、传感器或用户设备上,从而提供更快速、实时的计算和数据分析能力。在当前的数字化时代&a…

vue3-openlayers 轨迹回放(历史轨迹)(ol-animation-path实现)

本篇介绍一下使用vue3-openlayers轨迹回放(历史轨迹)(ol-animation-path实现) 1 需求 轨迹回放(历史轨迹)实时轨迹 2 分析 轨迹回放(历史轨迹),一般是一次性拿到所有…

AI交互及爬虫【数据分析】

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

axios全局封装AbortController取消重复请求

为什么? 问题:为什么axios要配置AbortController?防抖节流不行吗? 分析: 防抖节流本质上是用延时器来操作请求的。防抖是判断延时器是否存在,如果存在,清除延时器,重新开启一个延…

地信大四,实习重要吗?怎么找实习岗位?

“地信怎么找实习啊?” “实习三个月以上?暑假只有两个月啊” “什么岗位实习比较有用?” “助理类岗位是做什么?” …… 同学们好啊,不知不觉24年已经是过完一小半了,24届毕业的同学们也差不多就要迎来…

ES内存溢出报错问题解决方案

博主有话说&#xff1a;该博文根据实际案例编写&#xff0c;在编写过程中将敏感信息进行替换&#xff0c;可能存在矛盾的地方&#xff0c;望见谅 1 错误详情 [typecircuit_breaking_exception, reason[parent] Data too large, data for [<http_request>] would be [1256…

Qt项目天气预报(5) - 根据JSON刷新天气信息+城市匹配

刷新当天天气 我们使用如下api接入&#xff0c;当然需要自己去 易客云天气API免费天气API接口|天气预报接口|全球天气API接口|气象预警|空气质量 (tianqiapi.com)注册后生成自己的对应id才可以使用 //专业天气v61 http://v1.yiketianqi.com/api?unescape1&versionv61&…

力扣爆刷第153天之TOP100五连刷26-30(接雨水、环形链表、最长上升子序列)

力扣爆刷第153天之TOP100五连刷26-30&#xff08;接雨水、环形链表、最长上升子序列&#xff09; 文章目录 力扣爆刷第153天之TOP100五连刷26-30&#xff08;接雨水、环形链表、最长上升子序列&#xff09;一、300. 最长递增子序列二、415. 字符串相加三、143. 重排链表四、42.…

docker技术的说明

根据学习网站整理&#xff1a;Docker 10分钟快速入门_哔哩哔哩_bilibili 小白也能看懂的容器科普说明_哔哩哔哩_bilibili 1.虚拟机&#xff0c;需要模拟硬件系统、运行整个操作系统&#xff0c;但体积臃肿&#xff0c;内存占用较高&#xff0c;程序的性能也会受到影响。 2.…

哪里找好用的商城系统源码?

很多企业在挑选商城系统时&#xff0c;由于不懂源码&#xff0c;很难选择到高质量源码的商城系统&#xff0c;那么哪里找好用的商城系统源码?如何选择?接下来就跟着启山智软小编一起来看看吧&#xff0c;以下为选择源码时的四看&#xff1a; 1.一看源码公司行业动态 可以查…

git上传本地项目及更新项目

1、注册GitHub账号和下载git 2、在GitHub上新建一个仓库&#xff0c;点击号——>New repository&#xff0c;给仓库起一个名字&#xff0c;点击Create repository 3、进入要上传的项目中&#xff0c;右键点击git back here&#xff0c;命令行输入git init初始化&#xff0c…

13个行业数据分析指标体系如何建设100问

提供针对13个行业的数据分析指标体系的全面指南&#xff0c;涵盖各行业的关键指标和分析维度&#xff0c;帮助读者深入了解和构建有效的指标体系。以下是文章的主要内容&#xff1a; 电商行业数据指标体系&#xff1a;包括客户价值、商品、网站流量、整体运营、市场营销活动、市…

什么是响应式编程

我们知道&#xff0c;当系统面对大流量、高并发的访问请求时&#xff0c;就可能会出现一系列性能问题&#xff0c;导致服务丧失了即时的响应性。如何时刻确保系统具有应对请求压力的能力&#xff0c;是架构设计的核心问题之一。 经典的服务隔离、限流、降级以及熔断等机制能够在…

基于Istio服务网格的熔断限流实现

在微服务架构的宏大图景中&#xff0c;Istio服务网格如同一位精巧的交通指挥官&#xff0c;它不仅确保了服务间通信的顺畅无阻&#xff0c;还通过先进的熔断与限流机制&#xff0c;为系统的稳定性筑起了一道坚固的防线。接下来&#xff0c;让我们一窥Istio如何在不改动服务代码…

YTM32的flash存储器boot-swap功能详解

YTM32的flash存储器boot-swap功能详解 文章目录 YTM32的flash存储器boot-swap功能详解IntroductionPricinple & MachenisimApplication基本的boot swap用例不更新bootloader的情况更新bootloader的情况 Conclusion Introduction 客户在开发量产型的ECU软件时&#xff0c;大…

并发编程理论基础——管程(并发编程的万能钥匙)(七)

什么是管程 Java采用了管程技术&#xff0c;synchronized关键字及wait()、notify()、notifyAll()三个方法都是管程的组成部分管程和信号量是等价的&#xff0c;管程和信号量之间可以互相实现英文名&#xff1a;Monitor 直译为监视器管程指的是管理共享变量以及对共享变量的操作…