该版本包含了 MQTT 桥接的一个重构。 v5.0.11 或更早版本创建的配置文件,在新版本中会被自动转换。
需要注意的是,用于配置 MQTT 桥接的 API /bridges 请求的结构发生了不兼容的变更。
通过 node.global_gc_interval = disabled 来禁用全局垃圾回收 #9418。
优化命令行实现, 避免输入错误指令时, 产生不必要的原子表消耗 #9416。
支持在 Apple Silicon 架构下编译苹果系统的发行版本 #9423。
删除了老的共享订阅支持方式, 不再使用 $queue 前缀 #9412。
共享订阅自 MQTT v5.0 开始已成为协议标准,可以使用 $share 前缀代替 $queue。
重构认证 API,使用 PUT /authentication/{id}/position/{position} 代替了 POST /authentication/{id}/move #9419。
重新设计了 /rules API,将 metrics 改为专用资源,而不再是包含在每个响应中 #9461。
支持更多的 PSK 密码套件#9505。
提高 emqx_retainer 写入性能:摆脱写入时的事务 #9372。
HTTP 客户端库 ehttpc 从 0.4.0 升级到 0.4.2 #9520。
为 MQTT SSL 监听器增加配置 handshake_timeout #9502。
Dashboard 更新到 v1.1.3。
用户可以在 EMQX Helm Chart 中自定义 service 资源的 externalTrafficPolicy #9527。
现在调用 POST /gateway/lwm2m/clients/{clientid}/{read,write,observe} 时,将会返回 204,而不再是 200 #9480。
允许使用环境变量来创建一个认证配置 #9547。
例如,现在可以用如下环境变量来创建一个 MySQL 认证:
env EMQX_AUTHENTICATION__1='{mechanism="password_based",backend="mysql",server="localhost:3306",database="emqx",username="emqx",password="******",query="SELECT password_hash,salt FROM mqtt_user WHERE username=${username} LIMIT 1",enable=true}'。
在此之前,环境变量的重载仅作用于已经存在的配置之上,例如,当 emqx.conf 中已经配置了一个 MySQL 认证,那么可以使用如下方法来将它禁用:
env EMQX_AUTHENTICATION__1__ENABLE=false。
为 Amazon Linux 2 平台发布安装包 #9537。
修复 ExHook 更新 SSL 相关配置后,过时的 SSL 文件没有被删除的问题 #9432。
修复 /trace API 的返回值格式和相关文档 #9468。
在遥测功能未开启时,通过 /telemetry/data 请求其数据,将会返回 404 #9464。
修复了一些 MQTT 协议包的潜在解析错误 #9477。
修复了 EMQX Helm Chart 部署的一些问题 #9509。
Discovery error: no such service 错误,导致集群节点发现异常。通过 emqx_authenticator 修复隐藏 'client.authenticate' 回调。 现在 emqx_authenticator 如果没有任何验证器匹配,则将执行传递给进一步的回调 #9496。
如果在调用 /trace/:id/download?node={node} 时,node 不存在,则会返回 400 #9478。
当重复调用 POST /traces 时,将会返回 409 ,而不再是 400 #9494。
桥接功能修复,当同时配置了2个桥,方向为入桥和出桥时,出桥不工作的问题。#9523.
修复了 EMQX Helm Chart 中当用户使用自定义的用户名和密码时,创建的 Secret 资源不正确问题 #9536。