AWS IoT
开发人员指南

MQTT 持久性会话

持久性会话表示与 MQTT 消息代理的持续连接。当客户端使用持久会话连接到 AWS IoT 消息代理时,消息代理会保存客户端在连接期间所做的所有订阅。当客户端断开连接时,消息代理将未确认的 QoS 1 消息和发布的新 QoS 1 消息存储到客户端订阅的主题。当客户端重新连接到持久性会话时,将恢复所有订阅,并以每秒 10 条消息的最大速率将存储的所有消息发送到客户端。

通过发送将 cleanSession 标记设置为 0 的 CONNECT 消息来创建 MQTT 持久性会话。如果发送 CONNECT 消息的客户端不存在会话,则创建新的持久性会话。如果客户端已存在会话,则会恢复该会话。

设备需要查看 CONNACK(连接已确认)消息中的 sessionPresent 属性,以确定是否存在持久性会话。如果将 sessionPresent 设置为 1,则持久性会话存在,并且存储的消息会传输到客户端。如果将 sessionPresent 设置为 0,则不存在持久性会话,并且客户端必须重新订阅主题筛选条件。

持久性会话的默认过期期限为 1 小时。当消息代理检测到客户端断开连接(MQTT 断开连接或超时)时,过期期限开始。可以通过标准限制增加过程来增加持久性会话过期期限。如果客户端在过期期限内没有恢复其会话,则会话终止并且丢弃任何相关的存储消息。过期期限是近似值,会话可能最多比配置的持续时间多 30 分钟,但不能比配置的持续时间少。有关更多信息,请参阅 AWS 服务限制。为持久性会话存储的任何消息都将以标准消息传输速率进行计费。有关更多信息,请参阅 AWS IoT 定价