MQTTX 博客

MQTTX 1.11.0 发布:Topic Tree 与 Avro Schema

MQTTX 1.11.0 发布:Topic Tree 与 Avro Schema

我们非常高兴地宣布,MQTTX 1.11.0 现已发布!

本次发布引入了 Topic Tree 可视化功能,提供了一种按层级组织和监控 MQTT 主题的强大新方式。同时,我们在 Desktop 和 CLI 客户端中增加了对 Avro Schema 和 Message Pack 格式的支持,进一步扩展了 MQTTX 的数据格式处理能力。这些更新为用户提供了更强大的工具,帮助理解 MQTT 消息流并管理复杂的数据结构。

在此下载最新版本: https://mqttx.app/zh/downloads

Topic Tree

从 v1.11.0 开始,MQTTX Desktop 引入了 Viewer 功能,提供 MQTT 数据可视化能力,帮助用户更好地理解和监控消息流。

Topic Tree 目前处于 Beta 版本,是一款强大的可视化工具,可将 MQTT 主题和消息转换为直观的层级结构。它以树状形式展示 MQTT 主题关系和消息流,使 MQTT 数据更易于理解和管理。

Topic Tree 位于 Viewer 菜单中,会随着已订阅主题收到消息而自动更新。界面提供搜索框用于快速筛选主题、用于操作树的按钮,以及展示具体消息数据的详细信息面板。

Topic Tree 将节点分为三个层级:

  • 根节点显示客户端连接详情,包括客户端 ID 和主机信息。
  • 中间节点表示主题层级及其子主题。
  • 叶子节点包含消息详情,包括接收时间、Retain 标志和 QoS 值。

MQTT Topic Tree

用户可以切换到可视化树状图模式,获得不同的查看视角。该模式以更图形化的方式呈现主题结构,提供可调整的展开层级(默认为 4 层)和交互功能。用户可以将鼠标悬停在节点上,查看主题路径、消息数量、子主题数量和消息内容。

Topic Tree 可视化

注意:Topic Tree 功能目前处于 Beta 阶段,可能存在功能不完整的情况。我们欢迎您的反馈和建议。如果您遇到任何问题或有改进想法,请访问 https://github.com/emqx/MQTTX/issues 分享您的想法。

Avro Schema 支持

该功能来自社区用户 @LAST7 的贡献

MQTTX 1.11.0 引入了 Avro Schema 支持,进一步扩展了消息格式测试能力。这一增强使开发者能够充分测试使用 Avro 进行数据序列化的 MQTT 应用,确保消息在通信流程中正确编码和解码。

在将消息发布到生产环境之前,您现在可以验证 JSON 数据是否正确转换为 Avro 格式,并确认订阅端能够成功将 Avro 消息解码回 JSON。这一测试能力有助于在开发周期早期发现潜在的序列化问题,节省时间并减少生产环境中的调试工作。

Desktop

Desktop 客户端在 Script → Schema 页面中提供了直观的 Avro Schema 测试界面。您可以在此:

  • 使用标准 .avsc 格式定义 Avro Schema。
  • 在发布前测试 JSON 到 Avro 的编码。
  • 验证已订阅消息的 Avro 到 JSON 解码。
  • 在测试面板中即时查看转换结果。

示例 Schema:

{
  "type": "record",
  "name": "Person",
  "fields": [
    { "name": "id", "type": "int" },
    { "name": "name", "type": "string" }
  ]
}

Script → Schema 页面

CLI

对于自动化测试场景或命令行操作,MQTTX CLI 通过 -Ap 或 --avsc-path 选项集成 Avro 支持:

-Ap, --avsc-path <PATH>定义 AVRO 编码所用 Avro Schema 的 .avsc 文件路径
# Publish: Test your JSON to Avro encoding
mqttx pub -t 'msg/avro' -m '{"id": 1, "name": "hello"}' -Ap ./Person.avsc

# Subscribe: Verify Avro to JSON decoding
mqttx sub -t 'msg/avro' -Ap ./Person.avsc

这一功能增强了 MQTTX 测试结构化数据通信的能力,非常适合 IoT 设备开发和数据管道构建,确保 MQTT 应用中的 Avro Schema 消息得到准确处理。

Message Pack 格式支持

该功能来自社区用户 @lantica 的贡献

MQTTX 1.11.0 现已支持 Message Pack,这是一种高效的二进制序列化格式。这一新增能力使您能够处理需要更高效数据传输、同时保留结构化数据格式的 MQTT 应用。通过在 JSON、Base64 和 CBOR 之外支持 Message Pack,MQTTX 处理多样化 MQTT 消息场景的能力进一步增强。

Desktop

Desktop 客户端已在发布和订阅界面中完整集成 Message Pack 格式:

  • 发布:以 Message Pack 格式发送 MQTT 消息,自动将 JSON 数据转换为紧凑的二进制格式。
  • 订阅:接收 Message Pack 格式的 MQTT 消息,并以可读的 JSON 形式展示,简化消息查看和理解。

Message Pack

CLI

CLI 通过 -f 或 --format 选项支持 Message Pack 格式:

# Send messages in Message Pack format
mqttx pub -t 'msg/msgpack' -m '{"value": 123}' -f msgpack

# Receive Message Pack formatted messages
mqttx sub -t 'msg/msgpack' -f msgpack

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

CLI 支持自定义 WebSocket Headers

MQTTX 1.11.0 为 CLI 客户端引入了自定义 WebSocket Headers 支持,这是社区强烈要求的功能。该增强允许用户在建立 WebSocket 连接时添加自定义 Header,特别适用于需要特殊认证或自定义数据传输的场景。

使用 -wh 或 --ws-header 选项指定自定义 WebSocket Header:

mqttx sub -t test -wh "Authorization: Bearer token123" -wh "Custom-Header: value" -l ws -p 8083

注意:该功能仅在 Node.js 环境中运行的 CLI 客户端中可用。由于浏览器的安全限制,Desktop 和 Web 版本无法修改 WebSocket Headers,这是浏览器 WebSocket 实现中的已知限制。

该功能满足了 WebSocket MQTT 连接中的常见需求,尤其适用于以下场景:

  • 添加认证 Token
  • 包含自定义标识 Header
  • 设置特殊的连接参数

这一新增能力使 MQTTX CLI 成为测试 MQTT over WebSocket 连接更灵活的工具,特别是在需要自定义 Header 实现安全或路由的企业环境中。

可配置的 QoS 0 消息存储

MQTTX 1.11.0 引入了忽略 QoS 0 消息的选项,可优化大量消息流场景下的性能。QoS 0 消息是最基本的消息投递形式,不保证送达,现在可以配置为仅显示而不在本地存储。

在设置页面的高级区域中,您会看到「忽略 QoS 0 消息」选项,默认关闭。启用后:

  • QoS 0 消息会正常显示,但不会存储在本地。
  • 在高频消息场景中减少存储开销。
  • 之前已保存的 QoS 0 消息保持不变。

该功能在测试会产生大量 QoS 0 消息的 MQTT 应用时特别有用。它让您可以专注于需要投递保证的消息,同时保持最佳性能并减少存储空间占用。

忽略 QoS 0 消息

其他改进

客户端配置增强

  • 支持空客户端 ID:在 MQTT 5.0 中引入对空客户端 ID 的支持,允许服务器自动分配客户端 ID。这一增强可以更准确地模拟 MQTT 5.0 场景。
  • 默认会话过期时间:对于 clean start 设置为 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 模型支持,提供高性价比的语言模型选择。

常规修复

  • 修复了连接名称样式问题。
  • 改进了 benchmark 订阅主题的日志输出。
  • 修正了 Desktop 客户端中的一些拼写错误。

路线图

  • Topic Tree Milestone-2:增强主题的组织和可视化。
  • 消息图表可视化增强 - MQTTX Viewer:
    • Diff View:轻松比较不同的消息或 Payload。
    • Dashboard View:提供可自定义的 MQTT 活动总览,获得个性化洞察。
    • JSON View:改进 JSON 格式数据的处理和展示。
    • System Topic View:用于查看系统相关 MQTT 主题的专用视图。
  • 支持可配置的断开连接属性(MQTT 5.0):通过可自定义的断开连接设置增强连接管理。
  • IoT 场景数据模拟:将该功能引入桌面客户端,简化 IoT 场景测试。
  • 支持 Sparkplug B:扩展 MQTTX 功能以支持 Sparkplug B。
  • MQTT GUI 调试功能:新增用于调试 MQTT 通信的功能。
  • 插件功能:引入插件系统,支持 CoAP 和 MQTT-SN 等协议扩展。
  • JSON Schema:提供 JSON Schema 的编码和解码能力。
  • 脚本测试自动化(Flow):简化自动化测试工作流的创建和管理。