使用emqx版本是开源版本5.5
目前存在一个现象:设备断网后,尚未到达心跳超时时间时,推送一条带有消息失效时间的 QoS1 消息,EMQX 会不断重试发送该消息,直到设备被判定离线。若消息的失效时间已过,设备重新上线后仍然能够接收到这条过期消息。
详细步骤如下描述:
- 客户端连接与认证通过,客户端keepalive为120s。
- 订阅
TEST/123456
,QoS: 1。 - 客户端直接断开网络,不是显示调用discconnect。
- 发布一个带有消息失效时间(失效时间600s)的QoS1的消息。
- 客户端因 keepalive 超时 断开连接,期间emqx会不断进行publish。
- 等待消息过期后,客户端重新连接与重订阅(800s左右),仍然会收到过期消息。
日志追踪日志详见附件
日志追踪.zip (1.3 KB)