6月 24, 2026 - 开发笔记    emqx发送消息到离线的设备端,设备再次上线时收不到消息已关闭评论

emqx发送消息到离线的设备端,设备再次上线时收不到消息

云端发送消息到设备端,即使设备离线后,再次上线后依然可以接受到消息的方案:

推荐简单便捷方案:
1
:云端的MQTT配置的会话过期时间设置为7天。


2:云端发送MQTT消息时把qos设置为1

3:设备端连接mqtt时把cleanssion设置为0

这样就可以收到7天内的离线消息了。
不太推荐的做法:云端发送消息时使用保留消息的模式,虽然也可以让设备离线再上线后可以接收到消息,但会重复接收(再次下线再上线依然会再次接收到retain类型的消息),而想要解决不重复接受retain的消息,需要有清除机制:可采用,设备端收到消息处理后发送xxx/ack类型的event到云端,云端根据这个event去调用emqx的清除topic的retain消息的API,此时注意retain消息时针对topic的,若一个topic下有根据不同JSON内容的消息,清除时会一并清除,而不会区分json内容。此时就推荐一个topic对应一种消息到设备端,清除时则清除这个topic就行了。此方案会稍微麻烦些,不太推荐。

评论被关闭。