MQTT Persistent Sessions
A persistent session represents an ongoing connection to an MQTT message broker. When a client connects to the AWS IoT message broker using a persistent session, the message broker saves all subscriptions the client makes during the connection. When the client disconnects, the message broker stores unacknowledged QoS 1 messages and new QoS 1 messages published to topics to which the client is subscribed. When the client reconnects to the persistent session, all subscriptions are reinstated and all stored messages are sent to the client at a maximum rate of 10 messages per second.
You create an MQTT persistent session by sending a CONNECT message setting the
cleanSession
flag to 0. If no session exists for the client
sending the CONNECT message, a new persistent session is created. If a session
already exists for the client, it is resumed.
Devices need to look at the sessionPresent
attribute in the
CONNACK (Connection Acknowledged) message to determine if a persistent session
is present. If sessionPresent
is set to 1, a persistent session is
present and stored messages are delivered to the client. If
sessionPresent
is set to 0, no persistent session is present
and the client must re-subscribe to its topic filters.
Persistent sessions have a default expiry period of 1 hour. The expiry period begins when the message broker detects that a client disconnects (MQTT disconnect or timeout). The persistent session expiry period can be increased through the standard limit increase process. If a client has not resumed its session within the expiry period, the session is terminated and any associated stored messages are discarded. The expiry period is approximate, sessions might be persisted for up to 30 minutes longer (but not less) than the configured duration. For more information, see AWS Service Limits. Any messages stored for persistent sessions will be billed at the standard messaging rate. For more information see, AWS IoT Pricing.