环境信息
- EMQX 版本:v3.2.3
- 操作系统及版本:ubuntu
- 其他
问题描述
客户端断网离线后,网络恢复,客户端重连,但是消息丢失。
客户端订阅主题之后,发送端一直发送消息。但是客户端断网离线。忘了恢复后重新连接后,没有接受到断网期间的消息。 设置了opts.SetCleanSession(false)
如图中所示,断网超时后,网络正常自重重新连接后,5-11的消息没有接收到。
客户端断网离线后,网络恢复,客户端重连,但是消息丢失。
客户端订阅主题之后,发送端一直发送消息。但是客户端断网离线。忘了恢复后重新连接后,没有接受到断网期间的消息。 设置了opts.SetCleanSession(false)
如图中所示,断网超时后,网络正常自重重新连接后,5-11的消息没有接收到。
3.x的版本已经早退市了,建议用最新 4.4.x的版本。
这个问题跟版本有关系么? 还是我设置的问题?
3.x 和现在的版本大部分功能都是不一致的,我们已经没有进行维护了,也无法提供有效的服务
建议先升级版本
更换了最新版本的docker 。也是一样的情况
我推测是因为我心跳检测opts.SetKeepAlive(5 * time.Second) 5s。导致断网的5s内emqx还认为客户端在线?重新连接后,导致这部分消息丢失了?
那如果是这样的原因,该怎么进行设置呢?
不断网,我直接停止客户端,再重新运行客户端,消息确实没有丢失的情况。
如果希望客户端离线后,会话继续保存一段时间,需要使用 MQTT 5.0 的 session expire 功能,可以看这篇介绍
https://emqx.medium.com/mqtt-5-0-new-feature-clean-start-and-session-expiry-interval-748d4b1a2a95
这个问题解决了吗????
解决了吗?有什么好的方法推荐吗?
目前emq3.0版本不支持?