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

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

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

会话持久化

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

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

EMQX Cluster

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

查看文档

消息 Schema 验证

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

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

消息 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.client_attrs_init = [{expression = "nth(1, tokens(clientid, ':'))"set_as_attr = "VIN"}
]

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

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 不允许将任何表达式作为数组元素的问题,现在可以使用任何表达式作为数组元素,例如:

    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 更新日志。

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

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

相关文章

项目-双人五子棋对战: websocket的讲解与使用 (1)

项目介绍 接下来, 我们将制作一个关于双人五子棋的项目, 话不多说先来理清一下需求. 1.用户模块 用户的注册和登录 管理用户的天梯分数, 比赛场数, 获胜场数等信息. 2.匹配模块 依据用户的天梯积分, 实现匹配机制. 3.对战模块 把两个匹配到的玩家放到同一个游戏房间中, 双方通…

Linux_应用篇(15) 输入设备应用编程

本章学习输入设备的应用编程,首先要知道什么是输入设备? 输入设备其实就是能够产生输入事件的设备就称为输入设备, 常见的输入设备包括鼠标、键盘、触摸屏、按钮等等,它们都能够产生输入事件,产生输入数据给计算机系统…

文件夹加密软件哪个好用?文件加密的4个必备方法(2024)

如果您的电脑上有重要的个人或商业内容(例如知识产权),您可能想知道如何确保数据的安全。如果笔记本电脑丢失或被盗,他人可能会访问硬盘驱动器的内容,从而获取到您的个人隐私信息。因此,通过文件夹加密软件…

水电站生产指挥调度系统方案

一、方案背景 在碧波荡漾的大江大河之上,巍然屹立着一座座水电站,它们如同一个个巨人在默默地守护着我们的家园。在这些建设者的辛勤耕耘下,水电站在保障国家能源安全、优化能源结构以及减少环境污染等方面发挥着重要作用。 然而&#xff0c…

vue开发网站-使用插件element、vant 遇到的问题

1. js把两个字符串放进一个另字符串里,用逗号分隔 let string1 "Hello"; let string2 "World"; let result ${string1},${string2}; console.log(result); // 输出: Hello,World2.js将字符串转为数组 const str "Hello, world!"…

跨越百亿营收的今世缘,全国化进程仍挑战重重?

当前,白酒市场正在经历一场深度调整,随着存量时代到来,白酒品牌地位的更替和竞争格局的重构已经展开。这一背景下,今世缘等地方性酒企也正在凭借对区域市场的深耕,展现出较快的成长速度,并希望能借此占领市…

超强算力 Orange Pi Kunpeng Pro 开发板基础测评与体验

目录 开箱体验资源简介系统启动连接网络登录系统通过桌面登录通过串口登录通过 SSH 登录配置散热风扇 算力测试MNIST示例MBNET示例 体验总结 大家好,我是 Hello 阿尔法,有幸接到 CSDN 的邀请参与 Orange Pi Kunpeng Pro 开发板的测评活动,本文…

【Redis】redis高阶-使用zset实现延时队列

Hi,大家好,我是抢老婆酸奶的小肥仔。 最近在使用redis时,就想能不能用其实现消息队列?也在网上看了下其他小伙伴写的实现,结合自身业务实现了如下消息队列,希望对大家有用。 废话不多说,直接开撸。 1、为…

hmcode硬件编程1

在/home/golemon/hmcode/applications/sample/wifi-iot/app内创建文件夹。 这里创建了d_6_3文件夹 . ├── BUILD.gn ├── d_6_3 │ ├── BUILD.gn │ └── lab.c ├── demolink │ ├── BUILD.gn │ └── helloworld.c ├── iothardware │ ├── B…

安装Lubuntu24.04

Lubuntu24.04安装过程与22.04、20.04等完全一致。 记录 01 02 03 04 05 09 给出提示 10 11 12 13 特点 Lubuntu 22.04的特点主要包括以下几点: 轻量级且高效:Lubuntu作为Ubuntu的一个轻量级分支,专注于为低端电脑、老旧电脑或需要最大限…

【Java】设计一个支持敏感数据存储和传输安全的加解密平台

一、问题解析 在一个应用系统运行过程中,需要记录、传输很多数据,这些数据有的是非常敏感的,比如用户姓名、手机号码、密码、甚至信用卡号等等。这些数据如果直接存储在数据库,记录在日志中,或者在公网上传输的话&…

如何在QGIS中加载MapBox图源

在设计行业中需要多风格地图的调用,不管是规划、建筑设计还是景观,分析图的工作量都大,有好的底图,会事半功倍。 针对不同项目,会选择不同配色的底图,以便让设计内容中的呈现足够清晰。 这里就来分享一个…

DP读书:《半导体物理学(第八版)》(七) 金属与半导体的接触- 10 min 速通(载流子分布)

《半导体物理学(第八版)》10 min 速通 金属与半导体的接触 7.1 金属与半导体的接触及其能带图7.1.1 金属和半导体的功函数7.1.2 接触电势差7.1.3 表面态对接触势垒的影响 7.2 金属半导体接触整流理论7.2.1 扩散理论7.2.2 热电子发射理论7.2.3 镜像力和隧…

深度神经网络——什么是梯度下降?

如果对神经网络的训练有所了解,那么很可能已经听说过“梯度下降”这一术语。梯度下降是提升神经网络性能、降低其误差率的主要技术手段。然而,对于机器学习新手来说,梯度下降的概念可能稍显晦涩。本文旨在帮助您直观理解梯度下降的工作原理。…

论文精读--Swin Transformer

想让ViT像CNN一样分成几个block,做层级式的特征提取,从而使提取出的特征有多尺度的概念 Abstract This paper presents a new vision Transformer, called Swin Transformer, that capably serves as a general-purpose backbone for computer vision. …

cesium 的初步认识

Cesium是一个基于JavaScript开发的WebGL三维地球和地图可视化库。它利用了现代Web技术,如HTML5、WebGL和WebAssembly,来提供跨平台和跨浏览器的三维地理空间数据可视化。Cesium的主要特点包括: 跨平台、跨浏览器:无需额外插件&am…

常见4种时间管理方法及实施步骤(收藏版)

有效的时间管理方法,不仅能够保证项目按时交付,还能提高开发效率,减少成本超支和质量风险。如果缺乏明确的时间规划,可能会导致任务延误;容易造成资源分配不当,导致整体效率低下和成本增加。 因此有效的时间…

docker 安装mysql,redis,rabbitmq

文章目录 docker 安装ngnix,mysql,redis,rabbitmq安装docker1.安装下载docker-ce源命令2.安装docker3.查看版本4.查看docker状态5.启动docker6.测试安装ngnix 安装mysql8.0.361.拉取mysql镜像2.安装mysql8 安装redis1.拉取redis7.0.11镜像2.安装redis3.进入容器内部…

独立游戏开发的 6 个步骤

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

高安全且适应不同业务模式的跨网文件交换系统

在当今的商业环境中,文件的快速和安全传输对于企业运营至关重要。特别是在金融、医疗和政府等对数据保护和合规性要求极高的领域,传统的文件传输方式已经显得力不从心。因此,跨网络文件交换系统成为了企业数据传输不可或缺的工具,…