5.2.0版本共享订阅异常

环境

  • EMQX 版本:5.2.0
  • 操作系统版本:debian10

重现此问题的步骤

两个jar包都订阅了1000个设备的topic,且是用的共享订阅模式以及topic($queue/sys/46sz5222lb2b/46tcj289afcz/),共享订阅策略是hash_clientid,上游推送到mqtt,我从mqtt回调,结果两个jar都能收到消息,比如ajar包收到消息id为1-300的,中间断续几条,接着处理400-1000的,中间断续的被bjar包收到处理了!

预期行为

hash_clientid 是否是根据发送者的clientid判断要发给谁去处理,如果1000条消息都属于同一个发送端发送,1000条数据应该只被一个jar包处理!

的确是根据发送者的 clientid 来做 hash,然后选择一个订阅者,保证同一个 clientid 发送来的消息都会路由到同一个订阅者。

你的情况我怀疑是接收过程中 ajar 掉线了,所以 300 ~ 400 之间的消息给了另外一个订阅者 bjar。你可以通过打开 debug 日志看看是否有掉线的过程。或者 emqx ctl listeners 看看对应的端口有没有掉线的统计。

clientid指的是连接emqx时候自定义的id吗?
如果是掉线,为什么会掉线呢?jar包状态肯定是正常的,jar在启动时连接的mqtt,并且没有提示重连mqtt