目前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方式是有问题的。