发布一条消息后硬件侧会不停的接收到该消息,为什么会这样,这个如何做清零处理

发布数据后硬件侧会不停的接收到消息,这个如何做清零处理

  • EMQX 版本?
  • 打包贴一下 EMQX 日志信息及 可能的客户端日志
  • 不停接收到消息具体是指什么,是否有使用规则引擎/重发布/主题重写等功能?

emqx4.4版本如何移除离线消息

“保留消息” 还是 “离线消息”
保留消息可以用命令行查看主题/消息数量: retainer 命令

不保留消息,现在是设备端一直会重复收到消息,实际上我看日志就只发了一条

日志和 log trace 发一下呢?
trace 命令

发了一条流出5条,还在不停的流出

log trace 一下呢?或者抓下包看看
规则引擎/repub之类的功能有用么?

请尽量提供全面一些的信息,没有日志/抓包的cap文件,单凭现象也很难问题到底出在哪里。

log trace就只有这么多信息,但实际上一直有消息流出,刚开始有5条,现在已经有几百条了。未使用规则引擎之类的功能

[PUBLISH] test_puber@172.17.0.1:44744 msg: publish_to

msg: publish_to 是说 d43a9e34ceed4cb191b0d1f525de0f55@39144.27.44:58219 这个客户端向 CZZD/download/1123090292 这个主题发布了消息

17:50:22 发布了一条 t/1 payload 为 msg:hello 的消息

用的是 5.x 具体哪个版本,我去重现下这个 topic metrics 一直显示为流出的问题

5.1.6的版本


这个是我写的发送代码,没问题吧

在 5.1.6 上没复现出来。
你可以先这样尝试一下:

  • 发布订阅都用 MQTTX 进行,看看会不会有重复消息
    • 用 Java 客户端发布,MQTTX 订阅,看看会不会有多条
    • 用 MQTTX 发布,Java 客户端订阅,看看会不会有多条
  • trace 一下 d43a9e34ceed4cb191b0d1f525de0f55 这个 Java 客户端?
  • 抓包看一下 d43a9e34ceed4cb191b0d1f525de0f55 这个客户端发送/接收的报文,抓包 cap 文件可以直接私信发我

刚又试了,突然就正常了,正在验证还会不会再次出现

你说的这些都不会重复,就只有我这边发布了,然后设备那边接收会出现这种情况,现在又出现了

开两个 log trace
分别 trace publish 消息的客户端 id 和订阅主题的客户端 id
现在怀疑可能是订阅者没有给 EMQX 回复 PUBACK,EMQX 按照协议在给客户端重新投递。