0%

mqtt设置相关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
一.
每次连接时候 clientID需要不一样,不然会被服务端认为没有离线,会发送之前的消息。
可以在消费端通过设置QoS和cleanSession两个参数来决定客户端是否需要获取离线消息。
表 1. QoS和cleanSession的组合关系

| QoS 级别 | cleanSession = true | cleanSession = false |
|----------|-------------------|--------------------|
| QoS 0 | 无离线消息,在线消息只尝试推一次 | 有离线消息,在线消息只尝试推一次 |
| QoS 1 | 无离线消息,在线消息保证可达 | 有离线消息,所有消息保证可达 |
| QoS 2 | 无离线消息,在线消息保证可达且只接收一次 | 暂不支持 |

## 说明

1. **QoS 0**
- 最低的服务质量。消息最多发送一次,不会重试。
- 不保证消息到达,不适合重要消息。

2. **QoS 1**
- 消息至少到达一次。在线时保证投递成功。
- cleanSession=false 时,客户端离线期间的消息也会被服务器保留并投递。

3. **QoS 2**
- 消息确保只到达一次。适合需要严格唯一性的消息。
- cleanSession=false 时,部分平台暂不支持 QoS2 离线消息。

4. **CleanSession**
- true:每次连接会创建新的会话,断开连接时不会保留订阅和未发送的消息。
- false:服务器保留会话信息,离线消息会被存储并在客户端下次连接时发送。