给下线的设备发消息,设备上线后,能收到消息嘛

环境信息

  • EMQX 版本:4.3.5
  • 操作系统及版本:
  • 其他

问题描述

设备下线了,给设备发送消息,过了一段时间设备重新上线后,能收到消息么?如何能够让消息保留一段时间,在这段时间内,如果设备上线,还是可以接收到消息

配置文件及日志

借助 emqx 本身功能来做,常用的有2两种

  1. 开源版本,使用 CleanSession=false. 客户端下线后,emqx 会为这个设备保留一个会话(Session),它在被清理前都会一直收消息。除非会话被清理(默认2h);消息队列满了也会丢弃不在存储(默认1000);存储方式是内存的,重启会全部丢掉(emqx 6.0 可能会上持久化Session可以避免这个问题)
  2. 企业版本,借助外部数据库来实现离线消息的功能,例如:离线消息保存到 Redis | EMQX 企业版