このトピックでは、MQTT 5.0 のセッション有効期限機能について説明します。
背景情報
セッションとは、デバイスと IoT Platform の間に確立された接続に関する情報を指定し、IoT Platform に保存されるものです。この情報には、サブスクリプション関係、デバイスの状態、およびキャッシュされたメッセージが含まれます。
MQTT 3.1.1 では、
cleanSessionパラメーターでセッション設定を指定します。cleanSession = true: 接続が確立されると、セッションは削除されます。デバイスはトピックに再サブスクライブする必要があり、IoT Platform にハイブリッド方式で保存されている QoS 1 メッセージを受信しません。cleanSession = false: 接続が確立されると、セッションは保持されます。デバイスはトピックに再サブスクライブする必要がなく、IoT Platform にハイブリッド方式で保存されている QoS 1 メッセージを受信します。
MQTT 5.0 では、cleanSession パラメーターの名前が
cleanStartに変更され、Session Expiry Intervalプロパティが追加されました。セッションは、削除、保持、または期限切れにすることができます。Session Expiry Intervalプロパティを設定して、セッションを柔軟に管理できます。セッションを今後使用しない場合は、セッションを削除して IoT Platform リソースの消費を削減できます。これは、予期しないメッセージの受信を防ぐなど、デバイスの要件を満たすのにも役立ちます。Session Expiry IntervalプロパティとcleanStartパラメーターの値の組み合わせに基づいて、次のいずれかのケースが発生する可能性があります。
Session Expiry Interval プロパティを設定しない場合、デフォルト値 0 が使用されます。
Session Expiry Interval プロパティを 0xFFFFFFFF に設定すると、セッションは期限切れになりません。
シナリオ
頻繁に切断されるデバイス
車両など、継続的に移動するデバイスのセッションを頻繁に削除すると、デバイスはトピックに頻繁にサブスクライブする必要があります。前の図のケース 3 は、このシナリオに適しています。デバイスが指定された時間内に再接続する場合、セッションを再利用します。デバイスが長期間接続できない場合は、セッションを削除します。こうすることで、デバイスは期限切れのメッセージを受信しません。
メッセージを失うことができないデバイス
POS 機や放送スピーカーなどの金融デバイスを使用する場合、デバイスはメッセージの配信率に高い要件があります。前の図のケース 4 は、このシナリオに適しています。
セッションは、セッションの開始時から終了時までアクティブな状態のままです。対応するデバイスは、サブスクリプション関係とメッセージを保持します。
ステータスに関連しないデバイス
広告ディスプレイなどのデバイスを使用する場合、デバイスは継続的に新しい広告コンテンツを再生し、期限切れのメッセージを受信する必要はありません。前の図のケース 1 は、このシナリオに適しています。
セッションを削除すると、デバイスは期限切れのコンテンツを受信しなくなります。これは、IoT Platform リソースの消費を削減するのに役立ちます。