AWS IoT と AWS IoT Device SDK は、MQTT サービス品質 (QoS) の
レベル 0 と 1 をサポートしています。
QoS1は最低1回以上の送信を保証するものですが永続的セッションを利用することで実現が可能です。例えばクライアントの切断中に Publish されたメッセージを受信したい場合などに利用します。
MQTT 永続的セッションの使用
cleanSession フラグを 0 (false) に設定し IoT Core へ接続する必要があります。
またセッションが残存している場合のみ有効です。
https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/mqtt.html#mqtt-persistent-sessions
永続セッションは、クライアントによって承認されていない、
サービスの品質 (QoS) が 1 のクライアントのサブスクリプションと
メッセージを保存します。コネクテッドデバイスが永続セッションに再接続すると、
セッションが再開され、そのサブスクリプションが復元され、再接続前に受信され、
クライアントによって確認されていないサブスクライブされたメッセージが
クライアントに送信されます。
永続セッションの機能でセッションが保持される期間の上限
デフォルトは1時間です。
サービス制限の緩和申請は可能。以下の「Persistent session expiry period」参照。
AWS IoT Core endpoints and quotas – AWS IoT Core Message Broker
https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits
Persistent session expiry period
The duration for which the message broker stores an
MQTT persistent session.
The expiry period begins when the message broker detects the
session has become disconnected. After the expiry period has
elapsed, the message broker terminates the session and discards
any associated queued messages. You can adjust this to a value
from 1 hour to 7 days by using the standard limit increase >
process. 1 hour 1 hour Yes
以上