实现客户端离线消息保存,上线收能收到离线过程的中的数据怎么配置?

发送retain消息,只能保证离线后收到最后一条信息,配置“策略设置 最大保留消息数”也没有效果。我现在想上线后收到离线阶段的所有消息,这需要怎么配置呢?

你好,保留消息并不是用作这个目的的,你的这个需要可以通过持久会话来实现,可以看下 MQTT 持久会话与 Clean Session 详解

保留消息默认就是开启的,但是好像没用,只有在线的时候才能收到,重连上去获取不到离线时间的消息

因为保留消息不是你想的这个作用呀,你可以看下 MQTT 保留消息是什么?如何使用? 这篇文档。

说错了是持久会话

你可以看下你连接时使用的 Clean Start 或者 Clean Session 是什么值,以及连接上来以后 CONNACK 中的 Session Present 字段是什么值。

image

谢谢,搞定了,第一:因为没有设置接收最大数值


第二:可能是windows11还是什么问题,数据不能自动刷新出来,需要切换一下连接,就自动出来

你用的是 MQTT X 吗?这个和接收最大值应该是没什么关系的

是的,我用的MQTTX

我这边验证了一下,与接收最大值这个参数是没有关系的,不过确实是需要切换一下窗口才会显示收到的消息,我已经把这个问题反馈给相关的研发同事跟进了。

您好!请问一下,使用固定的Client ID,重连时会出现takenover问题,新的链接总是会把老的踢掉,怎么办呢?
详情劳烦您看一下我的帖子:MQTT客户端断链重连问题 - #2,来自 T-Web