EMQ 4.4.8 规则引擎sql语句中加了where以后,repblish到新的主题,然后去订阅新的主题,订阅不到


并且用自带测试也不行,去掉where语句后,自带测试就可以

这里的

WHERE
   topic = 'gate/per/device/#'

是指发布的主题要 全等 这个字符串才行,但发布的主题是不能带通配符的,所以这里肯定不会为 True 的。

试试用

WHERE
  topic =~ 'gate/per/device/#'

它表示的一个主题匹配

后面确实是按照您说的这种方式来的,但是还有一个疑问,就是发其他主题的报文,这个规则引擎都显示被命中,只是不会促发动作而已。按照sql来说,应该不会命中才对,这是emq的机制吗

其他主题能举例吗?只要没有满足 FROM 和 WHERE 的条件应该都不会计数才对

  • 你点一下那个规则,进去之后能看到相信的计数。SQL no result (SQL 无输出) 是说 where 等条件字句没有匹配到。
  • 发送其他报文应该不会命中的,只有主题能匹配到 FROM 后面的主题的情况下才会命中。

确实都命中了,where 后面的主题也命中了,其他的主题也命中了

确实都命中了,where 后面的主题也命中了,其他的主题也命中了。其他任何主题都命中了,只是不促发动作