MQTTX 1.11.0 发布:主题树可视化功能

科技   2024-10-31 07:45   北京  



MQTTX 是由 EMQ 开源的一款强大的跨平台 MQTT 5.0 桌面、CLI 和 WebSocket 客户端工具。支持快速创建多个同时在线的 MQTT 客户端连接,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接、发布、订阅功能及其他 MQTT 协议特性。


社区站网址:

https://mqttx.app/zh 

Github 仓库:https://github.com/emqx/MQTTX

我们很高兴地宣布,MQTTX 1.11.0 版本现已发布!

此版本引入了主题树可视化功能,这是一种强大的管理方式,可以层次化地组织和监控 MQTT 主题。此外,我们还在桌面端和 CLI 客户端中添加了对 Avro Schema 和 Message Pack 格式的支持,扩展了 MQTTX 的数据格式处理能力。这些更新为用户提供了增强的工具,以便更好地理解 MQTT 消息流和管理复杂的数据结构。

下载最新版本

https://mqttx.app/zh/downloads



主题树


从 v1.11.0 版本开始,MQTTX 桌面端引入了视图器功能,提供 MQTT 数据可视化能力,帮助用户更好地理解和监控消息流。
主题树(目前处于 Beta 版本)是一个强大的可视化工具,它将 MQTT 主题和消息转换为直观的层次结构。它以树状格式展示您的 MQTT 主题关系和消息流,使理解和管理 MQTT 数据变得更加容易。
位于视图器菜单中的主题树会随着您订阅的主题接收消息而自动更新。界面包括用于快速主题过滤的搜索框、用于树操作的操作按钮,以及提供消息特定数据的详细信息面板。
主题树将节点组织成三个层级:
1. 根节点显示客户端连接详情,包括客户端 ID 和主机信息。
2. 中间节点代表主题层次结构及其子主题。
3. 叶节点包含消息详情,包括接收时间、Retain 标志和 QoS 值。

用户还可以切换到可视化树状图模式以获得不同的视角。这种模式提供了主题结构的更图形化表示,提供可调节的展开层级(默认为 4 层)和交互功能。用户可以悬停在节点上以显示主题路径、消息数量、子主题数量和消息内容。

注意:主题树功能目前处于 Beta 版本,可能存在功能不完整的情况。我们欢迎您的反馈和建议。


Avro 编解码支持


此功能得以实现要感谢社区贡献者 @LAST7
MQTTX 1.11.0 引入了 Avro 编解码支持,扩展提升了其消息格式的测试能力。这一强大的新功能让开发人员能够全面测试使用 Avro 进行数据序列化的 MQTT 应用程序,确保消息在整个通信流程中得到准确的编码和解码。
在将消息部署到生产环境之前,您现在可以轻松验证 JSON 数据是否能正确转换为 Avro 格式,并确认订阅者能否成功将 Avro 消息解码回 JSON。这种测试能力不仅能在开发周期早期识别潜在的序列化问题,还能显著节省时间,大大减少生产环境中的调试工作量。
   桌面端
桌面客户端在 脚本 → 编解码 页面为 Avro 编解码测试提供了直观的界面。在这里您可以:
1. 使用标准的 .avsc 格式定义您的 Avro 编解码。
2. 在发布前测试 JSON 到 Avro 的编码。
3. 验证订阅消息的 Avro 到 JSON 的解码。
4. 在测试面板中立即查看转换结果。
示例编解码:
{  "type": "record",  "name": "Person",  "fields": [    { "name": "id", "type": "int" },    { "name": "name", "type": "string" }  ]}

   命令行(CLI)

对于自动化测试场景或命令行操作,MQTTX CLI 通过 -Ap  --avsc-path定义用于 Avro 编解码的 .avsc 文件路径)选项集成了 Avro 编解码支持:

# 发布:测试您的 JSON 到 Avro 编码mqttx pub -t 'msg/avro' -m '{"id": 1, "name": "hello"}' -Ap ./Person.avsc
# 订阅:验证 Avro 到 JSON 的解码mqttx sub -t 'msg/avro' -Ap ./Person.avsc
这一功能增强了 MQTTX 测试结构化数据通信的能力。它特别适用于物联网设备开发和数据管道构建,确保在 MQTT 应用中准确处理 Avro 编解码消息。


支持 Message Pack 格式


此功能得以实现要感谢社区贡献者 @lantica
MQTTX 1.11.0 现在支持 Message Pack,这是一种高效的二进制序列化格式。这一新增功能使您能够处理需要更高效数据传输的 MQTT 应用,同时保留结构化数据格式。通过支持 Message Pack 以及 JSON、Base64 和 CBOR,MQTTX 扩展了其处理多样化 MQTT 消息场景的能力。
   桌面端
桌面客户端将 Message Pack 格式完全集成到发布和订阅界面中:
  • 发布:以 Message Pack 格式发送 MQTT 消息,自动将您的 JSON 数据转换为紧凑的二进制格式。
  • 订阅:接收 Message Pack 格式的 MQTT 消息并以可读的 JSON 形式查看,简化了消息检查和理解过程。

   命令行(CLI)

CLI 通过 -f  --format 选项支持 Message Pack 格式:
# 以 Message Pack 格式发送消息mqttx pub -t 'msg/msgpack' -m '{"value": 123}' -f msgpack
# 接收 Message Pack 格式的消息mqttx sub -t 'msg/msgpack' -f msgpack

这一增强功能提升了 MQTTX 作为测试工具的多功能性,特别是在消息大小效率至关重要的物联网场景中。无论您是在测试已经使用 Message Pack 的系统,还是在探索更高效的 MQTT 通信消息格式,MQTTX 现在都提供了处理这种紧凑二进制格式的能力。



命令行中支持自定义 WebSocket Headers


MQTTX 1.11.0 为 CLI 客户端引入了备受社区期待的自定义 WebSocket headers 支持。这一增强功能使用户能够在建立 WebSocket 连接时添加自定义 headers,在需要特殊认证或自定义数据传输的场景中尤为有用。
使用 -wh  --ws-header 选项来指定自定义 WebSocket headers:
mqttx sub -t test -wh "Authorization: Bearer token123" -wh "Custom-Header: value" -l ws -p 8083
注意:此功能仅在运行于 Node.js 环境的 CLI 客户端中可用。由于浏览器安全限制,桌面版和 Web 版无法修改 WebSocket headers,这是浏览器 WebSocket 实现的已知限制。
这一功能解决了 WebSocket MQTT 连接中的常见需求,特别是在以下场景中:
  • 添加认证令牌
  • 设置特殊连接参数
  • 包含自定义识别 headers
这一增添使 MQTTX CLI 成为测试基于 WebSocket 的 MQTT 连接的更灵活工具,尤其是在企业的某些环境中,自定义 headers 对于安全或路由目的是必需的。


可配置的 QoS 0 消息存储


MQTTX 1.11.0 引入了忽略 QoS 0 消息的选项,优化了高容量消息流的性能。QoS 0 消息作为最基本的消息传递形式,没有保证传递,现在可以配置为显示但不进行本地存储。
在设置页面的高级部分,您会找到「忽略 QoS 0 消息」选项,默认是禁用的。启用后:
  • QoS 0 消息会显示但不会本地存储。
  • 高频消息场景下的存储开销减少。
  • 之前保存的 QoS 0 消息保持不变。
这个功能在测试产生大量 QoS 0 消息的 MQTT 应用时特别有用。它允许您专注于需要传递保证的消息,同时保持最佳性能并减少存储空间使用。


其他改进


   增强的客户端配置

  • 空客户端 ID 支持:在 MQTT 5.0 中引入了对空客户端 ID 的支持,使得代理能够自动分配客户端 ID。这一增强功能允许更准确地模拟 MQTT 5.0 场景。
  • 默认会话过期时间:对于清除会话标志设置为 false 的 MQTT 5.0 连接,将默认会话过期间隔调整为 7200 秒(2 小时)。这一变更与 EMQX 的默认配置保持一致,并优化了服务器端资源管理。

   改进的 MQTT 操作

  • 通配符主题匹配:解决了通配符主题匹配中使用 '#' 时错误匹配非预期主题的问题(例如,'foo/#' 匹配 'foobar/#')。
  • 版本表示法:在 CLI 中将 MQTT 版本表示法从 '5' 更新为 '5.0',提高了清晰度和一致性。

   AI Copilot 增强

  • 默认模型更新:将默认模型切换为 GPT-4o,提供更好的性能和功能。
  • 新模型支持:扩展支持已包括其他 GPT 模型,如 GPT-4o-mini 和 o1-preview。
  • DeepSeek 集成:为中国用户引入 DeepSeek 模型支持,提供一种经济实惠的语言模型替代方案。

   常规修复

  • 解决了连接名称样式问题。
  • 改进了基准测试订阅主题的日志记录。
  • 修正了桌面客户端中的一些拼写错误。


未来规划


  • 主题树 Milestone-2:增强主题的组织和可视化。
  • Payload 图表可视化增强 - MQTTX 查看器:
  • 差异视图:轻松比较不同的消息或 payload。
  • 仪表板视图:提供 MQTT 活动的可定制概览,以获得个性化洞察。
  • JSON 视图:改进 JSON 格式数据的处理和显示。
  • 系统主题视图:专门用于系统相关MQTT 主题的视图。
  • 支持可配置的断开连接属性(MQTT 5.0):通过可定制的断开连接设置增强连接管理。
  • 物联网场景数据模拟:将此功能引入桌面客户端,以简化物联网场景测试。
  • Sparkplug B 支持:扩展 MQTTX 功能已包括对 Sparkplug B 的支持。
  • MQTT GUI 调试功能:新功能以辅助 MQTT 通信调试。
  • 插件功能:引入支持协议扩展的插件系统,如 CoAP 和 MQTT-SN。
  • JSON Schema:JSON Schema 的编码和解码功能。
  • 脚本测试自动化(流程):简化自动化测试工作流的创建和管理。

点击“阅读原文”,了解更多






EMQ中文社区
EMQ 映云科技是全球领先的「云边端」连接与数据平台供应商,通过自主研发的 MQTT 软件,实现物理世界与数字世界间的数据采集、传输、转换、存储、分析与控制。
 最新文章