# 离线存储功能
# 什么是离线消息?
- 前提:离线消息必须是Qos=1或者Qos=2的消息
 
| 场景 | 描述 | 
|---|---|
| 当客户端发布的消息没有客户端订阅时,那么此消息被定义为离线消息 | 无订阅的消息 | 
| ACK未确认的qos=1或者qos=2的消息,也会被定义为离线消息 | ack未确认的消息 | 
# 离线消息使用场景
当设备没有确定投递到订阅的客户端,需要自动缓存消息,待设备上线后订阅消费消息,FluxMQ支持自动存储,订阅拉取消息,并完成消息投递,保证消息可达。
# 离线消息存储方式
| 方式 | 描述 | 
|---|---|
| 离线存储到Redis中 | 适用于消息量较大的场景 | 
| 离线存储到Mysql中 | 适用于小批量设备场景 | 
| 离线存储到Postgresql中 | 适用于小批量设备场景 | 
# 离线消息结构
下面为离线消息的报文格式,详细的报文也可以参考 数据类型
| 字段 | 解释 | 
|---|---|
| id | 消息唯一标识 | 
| payload | MQTT 消息体 | 
| messageId | MQTT 消息 ID | 
| topic | MQTT 主题 | 
| qos | MQTT 消息的 QoS | 
| retain | MQTT 消息是否保持 | 
| timestamp | 事件触发时间 (单位:毫秒) | 
| clientId | 客户端 ID | 
| clientIp | 客户端的 IPAddress | 
| nodeIp | 事件触发所在节点 IPAddress | 
← 保存到Redis 离线消息保存到Redis →