增强
#10667 将 MongoDB 连接器和桥接重构为单独的应用程序,以改进代码结构。
#11115 添加了信息日志,标示由于存活时间(TTL)过期而丢弃的缓冲消息。
#11133 在
retainer
的配置中将deliver_rate
重命名为delivery_rate
,兼容之前的deliver_rate
。#11137 重构了 Dashboard 监听器配置,使用嵌套的
ssl_options
字段来进行 SSL 设置。#11138 将k8s
api_server
的默认值从http://127.0.0.1:9091
更改为https://kubernetes.default.svc:443
。- 当
discovery_strategy=static
时,emqx_ctl conf show cluster
不再显示不相关的配置项。 与etcd/k8s/dns
相关的配置信息将不再显示。 - 从
emqx_ctl conf show_keys
中删除了zones
(已弃用的配置键)。
- 当
#11165 从
swagger.json
中删除了/configs/limiter
API 文档,API 仍然保留。#11166 在规则引擎 SQL 中添加了 3 个随机函数:
random()
: 生成 0 到 1 之间的随机数(0.0 =< X < 1.0)。uuid_v4()
: 生成随机 UUID(版本4)字符串。uuid_v4_no_hyphen()
: 生成无连字符的随机 UUID(版本4)字符串。
#11180 添加了一个新的配置 API
/configs
(GET/PUT),支持重新加载 HOCON 格式的配置文件。#11226 统一监听器开关配置项为
enable
,同时兼容之前的enabled
。#11249 添加了支持通过 REST API 设置 License 连接使用配额的告警阈值。
#11251 添加了
GET /cluster/topology
REST API,用来返回集群拓扑,显示 RLOG 核心节点和复制节点之间的连接。#11253 将 Webhook/HTTP 桥接重构为单独的 Erlang 应用,为将来的使用提供了灵活性,并允许将桥接作为独立应用程序运行。
#11079 Kafka 桥接,生产者模式下为消息添加了自定义 headers 支持。
#11132 MQTT 授权检查添加了 QoS 级别和保留消息条件,现在 EMQX 可以验证客户端是否有权限使用指定的 QoS 级别进行发布/订阅,以及有权限发布保留消息。
#11207 更新了多个数据桥接的驱动版本,以增强安全性并确保敏感数据不会泄露。包括:
- TDengine
- MongoDB
- MySQL
- Clickhouse
#11241 将 Schema Registry 重构为单独的 Erlang 应用以提供灵活性。
#11020 升级了 emqtt 依赖项,以防止调试日志中的敏感数据泄漏。
#11135 改进了规则引擎中的时间偏移解析器,并返回统一的错误代码。
#11236 改进了默认参数下
GET /clients
REST API 客户端查询的速度。
修复
#11004 主题重写不再允许在目标主题中使用通配符。
#11026 解决了规则引擎中
div
和mod
操作使用的一致性问题。之前,div
操作只能作为中缀操作使用,mod
只能通过函数调用使用用。现在,div
和mod
都可以通过函数调用语法和中缀语法使用。#11037 启动 HTTP 连接器时,如果系统无法连接到远程目标系统,EMQX 现在会返回一个描述性错误。
#11039 修复了 Redis 连接器的数据库验证问题。之前,负数被接受为有效的数据库。
#11074 修复了有关 MQTT-5.0 [MQTT-3.8.3-4] 协议内容的问题。
#11077 修复了更新监听器时使用非整数的端口可能发生崩溃的问题。
#11094 修复了 Kafka 桥接生产者模式在重新连接时无法报告连接错误的问题。
#11103 更新了
erlcloud
依赖项。#11106 添加了对桥接资源
worker_pool_size
的最大数量的验证。现在最大数量为 1024,以避免因不合理数量的工作进程导致大内存消耗。#11118 确保 REST API 响应中的验证错误信息更加明确。现在,如果有超出范围的错误,将呈现为
{"value": 42, "reason": {"expected": "1..10"}, ...}
,替换了先前使用的expected_type
,改为使用expected
。#11126 修复了规则下有异步模式的桥接时,规则的失败指标计数问题。
#11134 修复了日志中敏感字段大写
authorization
header 的值不被混淆的问题。#11139 将 Redis 桥接器重构为单独的 Erlang 应用,以改进代码结构。
#11145 在 Ekka 和 Mria 中进行了几处修复和改进。
Ekka:
Mria:
#11148 修复当一个节点离开集群时,其他节点仍然尝试将配置更新操作同步到其中的问题。
#11150 在启动 emqx_psk 应用程序时等待 Mria 表,确保 PSK 数据在复制节点上同步,即使它们没有初始化的 PSK 文件。
#11151 将 MySQL 桥接重构为单独的 Erlang 应用,以改进代码结构。
#11158 在 Mnesia 后端的 retainer 启动时等待 Mria 表,避免加入集群时出现错误。
#11162 修复 Webhook 桥接异步模式下,4XX 和 5XX HTTP 状态码被统计为成功指标的问题。
#11164 重新引入对嵌套占位符(例如:
${payload.a.b.c}
)的支持,对于 JSON 格式的 Payload,从规则动作与数据桥接中提取数据时无需先调用json_decode(payload)
。#11172 修复了特定情况下
payload
重复的问题:使用不带
as
子表达式的foreach
语句,并选择所有字段,例如:FOREACH payload.sensors FROM "t/#"
在选择
payload
字段和所有字段的情况下,例如:SELECT payload.sensors, * FROM "t/#"
- #11174 修复了 MQTT 桥接 Ingress 的
server
字段的编码问题。在修复之前,它被编码为 ASCII 字符对应的整数列表。 - #11184 配置项
mqtt.max_packet_size
最大值设置为协议定义 256MB。 - #11192 修复了在使用 atom 类型生成有效 HOCON 文件时,从 HOCON 文件中删除不必要的
"
。 - #11195 修复了 REST API 可以为 Stomp 网关指定客户端创建重复订阅的问题。
- #11206 连接到 CoAP 网关时,不再要求客户端的
username
和password
参数必填。 - #11208 修复了 LwM2M 客户端异常数据统计的问题。
- #11211
DELETE
操作操作不存在的资源时,一致性地返回404
状态码。 - #11214 修复了节点配置可能在加入集群时无法正确同步的问题。
- #11229 修复了在通过
emqx ctl conf load
更改配置后,插件无法启动/停止的问题。 - #11237
/prometheus
API中headers
的默认值应为对象而不是列表。 - #11250 修复了 WebSocket 数据包中包含多个 MQTT 数据包时其顺序被颠倒的问题。
- #11271 确保 REST API 与配置中百分比类型的范围为 0% 到 100%。比如
sysom.os.sysmem_high_watermark=101%
现在是无效的设置。 - #11272 修复了日志中的拼写错误,错误地将异常
PUBREL
数据包称为pubrec
。 - #11281 恢复对特殊的
$queue/
共享订阅主题前缀的支持。 - #11294 修复了
emqx_ctl cluster join
,leave
和status
命令。 - #11306 修复了规则动作指标不一致的问题,未计算丢弃的请求。
- #11309 改进了 EMQX 应用程序的启动顺序。简化了构建脚本,并改进了代码重用。
- #11322 支持从 EMQX 备份文件(
emqx ctl import
命令)中导入了其他配置:- rule_engine(以前由于错误未导入)
- topic_metrics(以前未实现)
- slow_subs(以前未实现)。
- #10645 更改了对 Oracle、PostgreSQL、MySQL 和 Kafka 生产者数据桥接的健康检查,以确保目标表/主题存在。
- #11107 现在在测试 MongoDB 桥接时返回健康检查失败原因。
- #11139 将 Redis 桥接重构为单独的 Erlang 应用,以改进代码结构和易维护性。
- #11151 将 MySQL 桥接重构为单独的 Erlang 应用,以改进代码结构和易维护性。
- #11163 隐藏 MondoDB 桥接中的
topology.pool_size
,并将其固定为 1 以避免混淆。 - #11175 现在,REST API 创建 MySQL 连接时如果使用不存在的主机名,将返回 400 错误而不是 503 错误。
- #11198 修复了复制节点上全局再平衡状态评估策略。之前,
/api/v5/load_rebalance/global_status
API method 可能在由复制节点处理时返回不完整的结果。 - #11223 InfluxDB 桥接写入配置中,某个字段混用小数和整数时可能会导致 Influx Line Protocol 序列化失败,并且无法写入 InfluxDB 桥接(当小数位为 0 时小数点会被忽略,InfluxDB 误以为其是整数)。 另请参阅:InfluxDB v2.7 Line-Protocol。
- #11225 修复了PostgreSQL/Timescale/MatrixDB 桥接没有验证
username
可能为空的问题。 - #11242 当节点加入集群时重新启动 emqx_ee_schema_registry。因为 emqx_ee_schema_registry 使用 Mria 表,所以节点加入集群需要重新启动此应用程序,以启动相关的 Mria 分片进程,确保在核心/复制节点模式下正确工作。
- #11266 修复和改进对 TDengine
insert
语法的支持:- 支持在模板中插入多表。
例如:
insert into table_1 values (${ts}, ${val}) into table_2 values (${ts}, ${val})
- 支持在模版中混合前缀/后缀和占位符。
例如:
insert into table_${topic} values (${ts}, '${id}', '${topic}')
注意:这是一个破坏性变更。此前,字符类型的占位符会被自动转义加上单引号,而现在需要手动加上单引号。 例如:insert into table values (${ts}, '${a_string}')
- 支持在模板中插入多表。
例如:
- #11307 在 Oracle 桥接中检查表是否存在时返回更友好的错误信息。
- #11316 修复了在 Oracle 桥接中未考虑 Pool Size 值的问题。
- #11326 修复了在 Oracle 桥接中返回错误检查的问题。 ### 已知问题