4.3.11版本规则引擎添加的规则不能动态生效,4.3.12、4.4.7版本规则引擎规则中where子句不生效

环境信息

  • EMQX 版本:4.3.11、4.3.12、4.4.7
  • 操作系统及版本:centos8
  • 其他

问题描述

4.3.11版本规则引擎添加的规则不能动态生效,4.3.12、4.4.7版本规则引擎规则中where子句不生效
1、4.3.11版本规则引擎添加过的规则需要重启emqx才会生效,可支持where子句
2、4.3.12、4.4.7版本规则引擎添加的规则可以动态生效,但配置过where子句后并不能生效

配置文件及日志

您好,4.4.7 版本尚未发布,麻烦您确认一下使用的版本?

  1. 规则添加、修改之后是不需要重启的。4.3.11 也没有见到过类似的问题,所以你可能没有触发到规则,查看一下规则计数,是不是没有匹配到。
  2. WHERE 字句没有出现过类似的问题,查看一下规则计数,是不是匹配到了但有异常导致整个语句执行失败?

image

1、使用到了exhook,通过helm形式部署的,from topic 后面没有子句,这样都不能动态生效的,不应该匹配不到的,重启集群后就能命中了
2、有没有where子句不影响命中的条数,还有如果有异常的话,emqx日志里面应该会打印的吧,没有找到相关日志

如果你的 exhook 插件不返回的话,会导致钩子流程中断,导致规则引擎调用不到。

plugins/emqx_exhook.conf 文件里面:

exhook.hook_priority = -1

这样给 exhook 最低优先级,让消息先走规则,再走 exhook。

得用最新的 4.3.x 才有这个配置。

exhook.hook_priority = -1,如果使用k8s部署的话怎么让容器使用configmap的配置或者环境变量的配置呢,eqmx 版本4.4

可以在容器環境中,怎么用环境变量修改配置
https://hub.docker.com/_/emqx

exhook.hook_priority 应该时对应 EMQX_EXHOOK___HOOK_PRIORITY

1 个赞

在k8s中configmap中配置后不生效

具体一点的 emqx 版本是?还有就是 configmap 看下怎么配置的呢

image
emqx 版本为 4.4.7

:rofl: 多打了个 _
应该是
EMQX_EXHOOK__HOOK_PRIORITY