使用规则引擎过滤事件的时候,重发布消息有重复

环境

  • EMQX 版本:5.8.1
  • 操作系统版本:Linux

重现此问题的步骤

配置规则引擎:

订阅重发布的消息,但是却收到3条

image

预期行为

只收到一条

实际行为

收到了3条

麻烦提供一下以下命令的结果:

./bin/emqx_ctl conf show rule_engine

rule_engine {
ignore_sys_message = true
jq_function_default_timeout = “10s”
rules {
rule_moe2 {
actions = [
{
args {
direct_dispatch = false
mqtt_properties {}
payload = “”
qos = 0
retain = false
topic = “event/device/message”
user_properties = “”
}
function = republish
}
]
description = “”
enable = true
metadata {created_at = 1733214210095}
name = “”
sql = “”“~
SELECT
topic,payload
FROM
“$events/message_acked”
WHERE
topic =~ ‘device/#’~”“”
}
}
}

我用你的配置republish 是正常的能 publish 一条消息的。

  1. A 订阅 device/# QoS 1
  2. B 订阅 republish 主题 event/device/message
  3. C 发布 device/123 QoS 1
  4. A B 各自收到一条对应自己的消息。

单节点上是正常的,我在集群上不行

麻烦提供一下在集群上测试的详细步骤 :heart:

和单节点一样的,登陆控制台,配置了规则引擎,结束

我通过配置您的规则引擎,然后再次使用以下方法测试,还是没有重现您所说的情况。

  1. A 订阅 device/# QoS 1
  2. B 订阅 republish 主题 event/device/message
  3. C 发布 device/123 QoS 1
  4. A B 各自收到一条对应自己的消息。


麻烦提供一个详细的复现过程,谢谢:pray:

:sweat: 我这一直是复现的,集群搭建的有问题?发一条,收到三条
image

我这个是开源版本的,是不是版本不一致?
image

这一块已经很久没改了,应该不是版本的问题。开源和企业版本这块是一样的代码。

测试了其他的事件,消息已投递,消息应答,都是是收到了三条,消息丢弃只收到了1条

这个事件有问题,没有丢失也收到了

image

好的,麻烦给一个能稳定重现的步骤给我。看看我们能不能复现。
不过从你的描述来看,应该是你的测试方法有问题,对于这些基础功能我们有详细的测试用例覆盖的,不然就是重大的事故。

抱歉,如果给不了稳定复现的详细步骤,就不在这上面浪费时间了哈。 :handshake: