Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >EMQX Enterprise 5.7 发布:新增会话持久化、消息 Schema 验证、规则引擎调试与追踪功能

EMQX Enterprise 5.7 发布:新增会话持久化、消息 Schema 验证、规则引擎调试与追踪功能

原创
作者头像
EMQ映云科技
发布于 2024-06-12 08:44:21
发布于 2024-06-12 08:44:21
1700
举报

EMQX Enterprise 5.7.0 版本现已正式发布!

在这个版本中,我们引入了一系列新的功能和改进,包括会话持久化、消息 Schema 验证、规则引擎调试与追踪测试等功能。此外,新版本还进行了多项改进以及 BUG 修复,进一步提升了整体性能和稳定性。

会话持久化

EMQX 内置的会话持久化(Durable Session)功能提供了强大的持久性和高可用性。该功能允许将 MQTT 持久会话(Persistent Session)及其消息存储到磁盘上,并在 EMQX 集群的多个节点之间持续复制会话元数据和 MQTT 消息。

该功能具备灵活的配置参数,通过配置复制因子,用户可以自定义每条消息或会话的副本数量,从而在持久性和性能之间实现平衡。

EMQX Cluster
EMQX Cluster

与内存存储相比,将 MQTT 消息存储在共享的、复制的持久存储中,可以降低在线和离线会话的内存使用量,支持更大规模的会话和消息处理。会话持久化功能还实现了有效的故障转移和恢复机制,确保服务的连续性和高可用性,从而提高系统的可靠性。

消息 Schema 验证

EMQX 内置了 Schema 验证功能,用于验证 MQTT 消息的结构和格式,对于不符合格式的消息可以丢弃或断开其客户端连接,并打印日志和触发规则引擎事件以方便用户进行进一步的处理。

Schema 验证可使用 JSON Schema、Protobuf 和 Avro 等多种格式的模式,或使用内置的 SQL 语句验证来自指定主题的消息格式。通过据格式校验,可以及早发现并屏蔽这些不合规消息,保证系统稳定可靠。

消息 Schema 验证
消息 Schema 验证

除了验证外,同一份 Schema 还能用于 EMQX 规则引擎的 Schema 编解码和 Schema 检查功能,以及外部数据系统和业务流程中,帮助用户实现:

  • 数据完整性:验证 MQTT 消息的结构和格式,以确保数据的一致性和正确性。
  • 数据质量:强制执行数据质量,检查缺失或无效的字段、数据类型和格式,可以确保数据的质量和一致性。
  • 统一的数据模型:确保整个团队和项目中使用统一的数据模型,减少数据不一致和错误。
  • 重用和共享:允许团队成员重用和共享 Schema,可以提高团队成员之间的协作效率,减少重复工作和错误。

规则支持调试与追踪

规则引擎现在提供了 DEBUG 与追踪功能,允许使用模拟数据或真实客户端触发规则,执行规则 SQL 以及规则中添加的所有动作,并获取每个步骤的执行结果。

下图是功能的截图,当规则 SQL 或任意动作执行失败时,可以在 Dashboard 页面上看到出错的记录,并快速定位到对应动作,查看结构化的错误信息以进行错误排查。

规则页面
规则页面

从图中可以看到,规则被触发了 4 次,前 3 次规则执行完全成功,第 4 次由于 HTTP 服务动作执行失败。结合错误日志,能够看到错误原因是 HTTP 服务器响应了 302 状态码。

相较于此前的 SQL 测试,规则 DEBUG 与追踪功能能够验证整个规则是否按预期工作,快速排查并解决存在的问题。这不仅加快了开发速度,还确保了规则在实际运行时能够如期执行,避免在真实环境中出现故障。

规则动作支持快速输入变量

在此前版本中,规则动作支持使用 ${var} 占位符语法来使用规则处理结果中的变量,以实现灵活的配置,例如,动态的构造 HTTP 请求、MySQL 的 INSERT 语句、AWS S3 对象键等。这一功能带来了极大的灵活性,但用户需要自主推导当前规则 SQL 中可用的变量,并完整手动输入。这增加了使用难度,且容易出错。

在本次发布中,Dashboard 的动作配置页面为支持使用占位符变量的输入框添加了动态输入提示。类似编辑器的代码提示功能,根据当前规则 SQL 自动推导出可用的变量,在用户输入过程中快速提示可用的值。这不仅方便用户精准进行功能配置,还显著减少了出错的可能性。

日志追踪功能增强

在日志追踪中新增了以下两个特性:

  1. 支持指定规则 ID 跟踪规则执行结果:精准地跟踪和调试某一特定规则的执行过程,日志输出将包含规则 SQL 的执行结果,以及与规则中添加的所有动作的执行过程日志,以便快速定位和排查问题。
  2. 支持设置日志追踪输出格式为 JSON:更便于自动化日志处理和分析,提升数据处理效率。

客户端属性

客户端属性是 EMQX 提供的一种机制,允许使用键值对的方式为每个客户端设置额外的属性。

属性值可以从 MQTT 客户端连接信息(如用户名、客户端 ID、TLS 证书)处理生成,也可以从认证成功返回的附带的数据中设置。例如:

添加配置,在客户端连接时以 : 分割客户端 ID 并将第一段作为 VIN 属性:

代码语言:mqtt
AI代码解释
复制
mqtt.client_attrs_init = [
  {
    expression = "nth(1, tokens(clientid, ':'))"
    set_as_attr = "VIN"
  }
]

属性可以用于 EMQX 的认证授权、数据集成和 MQTT 扩展功能等功能中。以 MySQL 授权检查为例,可以配置查询 SQL,根据客户端属性中的 VIN 查找客户端具有的发布订阅权限:

代码语言:sql
AI代码解释
复制
SELECT 
  permission, action, topic, qos, retain 
FROM mqtt_acl 
  WHERE VIN = ${client_attrs.VIN}

相较于直接使用客户端 ID 等静态属性,客户端属性能够更灵活的用在各类业务场景中,并简化开发流程,增强开发工作的适应性和效率。

JWT 认证到期断开客户端连接

JWT 规范中带有过期时间属性,在签发 Token 时允许声明一个过期时间。在此之前,EMQX 的 JWT 认证中仅在客户端连接时检查这一属性,在连接成功后,即使在 JWT 过期客户端也能保持连接。

本次发布中,EMQX 在 JWT 认证中添加了令牌过期后断开 MQTT 连接的功能。默认情况下该功能是启用的,以避免潜在的安全隐患,从而提升系统的整体安全性。

如果要保留以前的行为,请关闭 JWT 认证器设置中过期后断开连接选项。

客户端认证
客户端认证

插件开发支持热配置与自定义 UI

此前 EMQX 已经支持了插件,能够用来扩展实现自定义的功能。在一些插件中,可能需要用户填写相应的配置参数。

本次发布为插件添加了参数热配置功能,并允许用户通过 Avro Schema 来声明管理参数配置所需的 UI 页面,EMQX Dashboard 会在插件管理页面中自动加载。

开发者只需专注于后端业务逻辑的实现,UI 页面由系统自动生成,减少了开发工作量。对于用户,则可以直观地配置插件参数,提升用户体验。

这是插件中可选的功能,用户仍然可以使用纯后端进行开发。

其他功能

  1. Apache IoTDB 数据集成支持 IoTDB v1.3.0 版本以及批量插入功能,提高了数据写入性能。
  2. 将错误格式导入内置身份验证数据库时,提供了更具体的错误信息,便于用户快速定位问题。
  3. RocketMQ 添加了对命名空间和密钥调度策略的支持,实现与阿里云上托管的 RocketMQ 集成。

BUG 修复

以下是主要 BUG 修复列表:

  • #12653 规则引擎的 bin2hexstr 函数现在支持位大小不能被 8 整除的参数,例如 subbits 函数的返回值。
  • #12657 修复规则引擎 SQL 不允许将任何表达式作为数组元素的问题,现在可以使用任何表达式作为数组元素,例如:
代码语言:sql
AI代码解释
复制
SELECT
  [21 + 21, abs(-abs(-2)), [1 + 1], 4] as my_array
FROM 
  "t/#"
  • #12765 确保统计数据 subscribers.count subscribers.max 包含共享订阅者,此前只包含非共享订阅者。
  • #12812 修复了连接器因健康检查阻塞,导致更新或删除连接器超时的问题。
  • #12996 修复保留消息 emqx_retainer 进程泄漏问题。此前客户端在接收保留消息时断开连接可能会导致进程泄漏。
  • #12871 修复疏散节点导致的节点启动问题。此前,如果节点疏散过程中关闭了 EMQX,则 EMQX 将无法重新启动。
  • #12888 修复导入备份数据后 License 相关的配置丢失问题。
  • #12895 添加了 DynamoDB 连接器和动作中一些必要但缺失的配置。

更多功能变更和 BUG 修复请查看 EMQX Enterprise 5.7.0 更新日志。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
EMQX Enterprise 新版本发布:新增 Apache IoTDB 支持、HStreamDB 最新版以及 MongoDB 6.0 适配
我们很高兴地宣布:EMQX Enterprise 4.4.15 和 4.4.16 版本现已正式发布!
EMQ映云科技
2023/03/24
5210
EMQX Enterprise 4.4.12&4.4.13 发布:集群负载重平衡、TDengine 3.0 适配以及子表批量插入
我们很高兴地告诉大家,EMQX Enterprise 4.4.12 以及 4.4.13 版本正式发布!
EMQ映云科技
2023/01/05
1.4K0
NanoMQ Newsletter 2022-06|规则引擎正式发布 & NanoSDK 支持 MQTT over QUIC
NanoMQ 继续保持稳步更新,0.9.0 将于 7 月初正式发布。此版本为大家带来了 2 个重要的功能更新:规则引擎和支持 QUIC 的 NanoSDK。同时还增加了离线数据缓存配置,各项性能优化和缺陷修复也在持续进行中。
EMQ映云科技
2022/07/07
6620
Java物联网开发(二) —— 开源百万级分布式 MQTT 消息服务器EMQX
Mnesia 数据库是 Erlang 内置的一个分布式 DBMS,可以直接存储 Erlang 的各种数据结构 EMQ X 使用 Mnesia 数据库存储自身运行数据,例如告警记录、规则引擎已创建的资源和规则、Dashbaord用户信息等数据,这些数据都将被存储在 mnesia 目录下,因此一旦删除该目录,将导致 EMQ X 丢失所有业务数据。可以通过 emqx_ctl mnesia 命令查询 EMQ X 中 Mnesia 数据库的系统信息。
时间静止不是简史
2021/08/12
7.7K0
Java物联网开发(二) —— 开源百万级分布式 MQTT 消息服务器EMQX
EMQX基础功能
EMQ X Dashboard 是一个 Web 应用程序,你可以直接通过浏览器来访问它,无需安装任何其他软件。 当 EMQX 成功运行在你的本地计算机上且 EMQX Dashboard 被默认启用时,通过访问 http://localhost:18083 来查看Dashboard,默认用户名是 admin ,密码是 public 。
叫我阿杰好了
2022/11/07
6.3K0
EMQX基础功能
EMQX Enterprise 4.4.11 发布:CRL/OCSP Stapling、Google Cloud Pub/Sub 集成、预定义 API 密钥
我们很高兴地告诉大家,EMQX Enterprise 4.4.11 版本正式发布!
EMQ映云科技
2022/12/01
2.2K0
EMQX v4.4.5 发布:新增排他订阅及 MQTT 5.0 发布属性支持
近日,EMQX 开源版 v4.3.16、开源版 v4.4.5 与企业版 v4.3.11、企业版 v4.4.5 四个维护版本正式发布。
EMQ映云科技
2022/07/21
5680
EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成
上个月,EMQX 最新的里程碑版本 v5.0.0 正式发布。这一版本带来了诸多开创性的更新与改进。目前,EMQX 团队正以每两周一个版本的速度进行后续版本的迭代,以快速修复已知问题和纳入更多功能。此外,本月 EMQX 团队在社区交流和多个新功能上也有比较大的进展。
EMQ映云科技
2022/08/02
7970
EMQX Newsletter 2022-06|与 HStreamDB 集成、充电桩通信协议 OCPP 网关开发…
继 EMQX 5.0.0-rc.4 发布之后,v5.0 的开发工作已经接近尾声。除了继续优化 Dashboard 的 UI/UX 以提升使用体验,和测试并修复各项 Bug 以提升软件稳定性以外,EMQX 团队也在对用户文档进行全面的改进和更新,不久后即将为用户带来一个更加强大易用的 EMQX 5.0。
EMQ映云科技
2022/07/04
1K0
EMQX 5.0 发布:单集群支持 1 亿 MQTT 连接的开源物联网消息服务器
近日,全球领先的开源物联网数据基础设施软件供应商 EMQ 映云科技宣布,旗下核心产品开源分布式物联网 MQTT 消息服务器 EMQX 5.0 版本正式发布!
EMQ映云科技
2022/07/07
1.2K0
EMQX+HStreamDB 实现物联网流数据高效持久化
在 IoT 场景中,通常面临设备数量庞大、数据产生速率高、累积数据量巨大等挑战。因此,如何接入、存储和处理这些海量设备数据就成为了一个关键的问题。
EMQ映云科技
2023/03/17
3830
EMQX vs Mosquitto | 2023 MQTT Broker 对比
物联网开发者需要为自己的物联网项目选择合适的 MQTT 消息产品或服务,从而构建可靠高效的基础数据层,保障上层物联网业务。目前市面上有很多开源的 MQTT 产品,在性能功能等方面各有优点。本文将选取目前最为流行的两个开源 MQTT Broker:EMQX 和 Mosquitto,从技术架构、性能、功能、社区情况等多维度进行 1v1 对比,帮助读者更加深入了解这两个产品。
EMQ映云科技
2023/04/21
2.8K0
基于 RocksDB 实现高可靠、低时延的 MQTT 数据持久化
MQTT 协议标准中规定 Broker 必须存储离线客户端的消息。在之前的版本中,EMQX 开源版采用了基于内存的会话存储,企业版则在此基础上进一步提供了外部数据库存储方案,借此实现数据持久化。
EMQ映云科技
2022/08/08
1K0
EMQX vs VerneMQ | 2023 MQTT Broker 对比
EMQX 和 VerneMQ 都是用 Erlang/OTP 开发的高性能、分布式开源 MQTT Broker,以其稳定性、容错性和扩展性著称。
EMQ映云科技
2023/04/21
6900
初识EMQX与安装
EMQ X 基于 Erlang/OTP 平台开发的 MQTT 消息服务器,是开源社区中最流行的 MQTT 消息服务器。EMQ X 是开源百万级分布式 MQTT 消息服务器(MQTT Messaging Broker),用于支持各种接入标准 MQTT 协议的设备,实现从设备端到服务器端的消息传递,以及从服务器端到设备端的设备控制消息转发。从而实现物联 网设备的数据采集,和对设备的操作和控制。
叫我阿杰好了
2022/11/07
4.4K0
初识EMQX与安装
NanoMQ Newsletter 2022-08|v0.11:MQTT 5.0 + MQTT over QUIC 桥接,新增 HTTP API 监控客户端状态
8 月,NanoMQ 继续保持稳步更新。最新的 0.11.0 版本已于 8月底正式发布(https://github.com/emqx/nanomq/releases/tag/0.11.0)。此版本继续增强了桥接功能,增加了 MQTT 5.0 + MQTT over QUIC 桥接模式,新增和修复了对已连接客户端状态进行监控和查询的 HTTP API。此外各项性能优化和缺陷修复也在持续进行中。
EMQ映云科技
2022/09/06
2.4K0
EMQX 多版本发布、新增自定义函数功能
11 月,EMQX 开源版和企业版分别发布了多个迭代版本,在安全性保障和生态集成方面又有了新的提升。
EMQ映云科技
2022/12/08
1.4K0
易操作、可观测的 MQTT Dashboard,集群数据尽在掌握
EMQX 提供了一个内置的管理控制台,即 EMQX Dashboard 。方便用户通过 Web 页面就能轻松管理和监控 EMQX 集群,并配置和使用所需的各项功能。
EMQ映云科技
2022/08/26
9330
​MQTT 持久会话与 Clean Session 详解
不稳定的网络及有限的硬件资源是物联网应用需要面对的两大难题,MQTT 客户端与服务器的连接可能随时会因为网络波动及资源限制而异常断开。为了解决网络连接断开对通信造成的影响,MQTT 协议提供了持久会话功能。
EMQ映云科技
2022/11/07
1.4K0
EMQX 5.0 全新网关框架:轻松实现多物联网协议接入
作为一款大规模分布式物联网 MQTT 消息服务器,EMQX 除了完整支持 MQTT 3.x 和 5.0,还支持 STOMP、MQTT-SN、LwM2M/CoAP,JT/T 808 等多种主流协议接入。不仅提供了广泛的连接能力,以处理适用于各类场景的物联网设备;还为后端的物联网管理服务提供了统一接入平台和管理接口,以降低异构协议间的适配成本。
EMQ映云科技
2022/09/13
1.1K0
推荐阅读
相关推荐
EMQX Enterprise 新版本发布:新增 Apache IoTDB 支持、HStreamDB 最新版以及 MongoDB 6.0 适配
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文