リテインメッセージ機能は MQTT 3.1.1 で定義されています。IoT Platform は、デバイスを MQTT 5.0 経由で IoT Platform に接続する場合に、この機能をサポートしています。このトピックでは、リテインメッセージについて説明します。
リテインメッセージ
デバイスまたはサービスが Retain という名前のタグが付いたメッセージを公開すると、メッセージはリアルタイムでサブスクライバーに送信され、IoT Platform にキャッシュされます。新しいサブスクライバーが現れると、Retain タグが付いたメッセージがサブスクライバーにプッシュされます。
リテインメッセージの更新:同じトピックを使用して新しいメッセージを公開すると、リテインメッセージのペイロードが新しいメッセージのペイロードで上書きされます。
次のいずれかの方法を使用して、リテインメッセージを削除します。
リテインメッセージと同じトピックを持ち、ペイロードが空の新しいメッセージを公開すると、リテインメッセージが削除されます。
[メッセージの有効期限の間隔] パラメーターを設定します。リテインメッセージの有効期限が切れると、リテインメッセージは削除されます。
期限切れのセッションは、リテインメッセージには影響しません。リテインメッセージは、セッションのステータスに関係なく公開できます。
リテインメッセージは、メッセージの有効期限機能をサポートしています。温度制御関連のメッセージなど、メッセージの内容が一定期間で期限切れになる場合は、リテインメッセージ機能とメッセージの有効期限機能を一緒に使用します。詳細については、「メッセージの有効期限」をご参照ください。
デバイスは、Retained タグが付いた複数のメッセージを一度に公開できます。リテインメッセージは、デバイスがオンラインかオフラインかに関係なく公開できます。
シナリオ
リテインメッセージは、オフラインデバイスを設定する必要があるシナリオに適しています。たとえば、広告ディスプレイは日中に動作し、夜間は休止状態になります。デバイスは毎日新しい広告コンテンツを再生します。この場合、デバイスが最新のコンテンツをリクエストする場合と比較して、ビジネスサーバーがデバイスに最新のコンテンツを公開する場合、システムはより効率的に動作します。消費電力を削減するために、デバイスは休止状態になり、オフライン状態になります。この場合、ビジネスサーバーはデバイスをポーリングしてコンテンツをプッシュできない可能性があります。この問題を解決するには、リテインメッセージを使用できます。これにより、デバイスが次回オンラインになったときに新しいメッセージを受信できるようになります。