EMQX 6.0 中的不兼容变更
6.1.0
#16368 内部正则表达式引擎已升级为 PCRE2,带来了更高的匹配性能以及更严格的语法校验。
如果你在规则引擎 SQL 中使用了
regex_match、regex_replace或regex_extract函数,一些依赖于宽松或未定义行为的现有正则表达式,可能无法再成功编译或按预期进行匹配。需要注意的关键变化包括:
- 更严格的转义规则:此前被忽略的无效或不必要的转义序列,现在会被视为错误。
- 不再支持:
[\w-\.],在字符类中对.进行转义是不必要的,现已不被接受;只有元字符才需要转义。 - 不再支持:缺少有效十六进制数字的
\x(例如\xGG),现在会导致编译错误,而不再被解释为字面量x。
- 不再支持:
- 更严格的分组名称校验:正则表达式中不再允许使用重复或为空的命名捕获分组。
需要采取的行动: 请检查并验证所有使用正则表达式的规则引擎 SQL 定义。对于复杂的正则模式,建议使用符合 PCRE2 规范的测试工具进行验证(大多数在线正则测试工具均支持 PCRE2),或在升级前于预发布 / 测试环境中进行充分测试。
- 更严格的转义规则:此前被忽略的无效或不必要的转义序列,现在会被视为错误。
6.0.1
#16061 修复了一个问题:RocketMQ 动作忽略了配置的 payload 模板,错误地发送了整个规则的输出结果。
如果您依赖了此前(错误)行为,可能需要更新 payload 模板,以确保消息格式符合预期。