关于packet_id与会话、topic之间的关系

目前publish消息时遇到此问题,但不是必现:PUBREC(Q0, R0, D0, PacketId=5, ReasonCode=145)

emqx版本信息:[5.5.1]、[5.7.0]
目前使用的策略是有个共享订阅的topic:t_server_msg (服务端消费)
有大概1000个IoT设备( paho.mqtt.golang客户端)publish消息到此topic
根据emqx服务器日志查询到:ReasonCode=145

根据官方code自查解释为:
表示收到报文中的 Packet ID 正在被使用,例如发送方发送了一个 Packet ID 为 100 的 QoS 1 消息,但是接收方认为当前有一个使用相同 Packet ID 的 QoS 2 消息还没有按成它的报文流程。这通常意味着当前客户端和服务端之前的会话状态不匹配,可能需要通过设置 Clean Start 为 1 重新连接来重置会话状态。

目前我想知道的问题是,packetId是与会话关联还是topic关联,如果与会话关联是否该问题是由于会话(目前是保留会话方式)产生,如果是与topic关联,是否此publish方式是有问题的。

您好,packet-id 是和当前这个会话相关的。每个需要被确认的消息(例如 订阅请求,QoS1,OoS2 的消息发布,心跳 PING包等)都会使用消息ID来标记这条消息

了解,但是目前这个ReasonCode=145是为什么会出现的呢?

自查过debug日志,该会话的前几个packetId都是正常publish的,但是到了5这个,就出现了145,然后被drop掉,后面的packetId又是正常publish的。

所以我的问题是不知道这个145是为什么会出现的,没有查到任何有效日志信息。