# 离线存储功能
# 什么是离线消息?
- 前提:离线消息必须是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 →