この Topic では、MQTT のリテインドメッセージ機能について説明します。
機能紹介
保持メッセージとは、クライアントが Topic にパブリッシュするメッセージであり、サーバーに保持するようフラグが設定されたものです。
その Topic をサブスクライブする新しいクライアントは、この保持メッセージをすぐに受信します。新しいメッセージがパブリッシュされるのを待つ必要はありません。
制限
この機能は、Professional Edition および Platinum Edition でのみ利用可能です。有効にするには、チケットを送信してください。
1 つの Topic につき、保持メッセージは 1 つしか存在できません。新しい保持メッセージは、以前のメッセージを上書きします。
ワイルドカード文字を使用してサブスクライブする場合、サブスクリプションは最大 100 の親 Topic と子 Topic に一致させることができます。
Quality of Service (QoS) レベルが 1 または 2 の場合、サーバーは保持メッセージの送信を最大 1 回リトライします。クライアントが保持メッセージのある Topic をサブスクライブすると、サーバーはそのメッセージを送信します。リクエストがタイムアウトする前にサーバーが確認応答を受信しない場合、メッセージの送信をリトライします。このリトライでも確認応答がない場合、サーバーは現在の接続でのリトライを停止します。サーバーは、クライアントが再接続してサブスクライブした場合にのみリトライします。
シナリオ
ステータス更新:Internet of Things (IoT) アプリケーションでは、デバイスは温度や湿度などのステータスを保持メッセージとして定期的にパブリッシュできます。新しいクライアントが接続してサブスクライブすると、最新のデバイスステータスをすぐに受信します。
システム構成:システムは、構成情報を含む保持メッセージをパブリッシュできます。ネットワークに参加する新しいデバイスは、最新の構成を直接取得できます。
最後の既知の値:株式取引や価格提示などのシナリオでは、最終価格を保持メッセージとして送信できます。これにより、すべての新しいサブスクライバーが最終取引価格を直接取得できるようになります。
ウェルカムメッセージ:例えば、新しいクライアントがチャットルームの Topic をサブスクライブすると、そのルームのウェルカムメッセージをすぐに受信できます。
メッセージ例
例えば、気象観測所のデバイスが定期的に温度データを「weather/station1/temperature」という Topic にパブリッシュします。メッセージをパブリッシュする際に、保持フラグを設定して保持メッセージにします。
PUBLISH
Topic: weather/station1/temperature
Payload: 24.5
QoS: 1
Retain: 1 // ブローカーにこのメッセージを保持するように指示しますその後、デバイスが新しい温度データをパブリッシュしなくても、新しいクライアントは次のように「weather/station1/temperature」をサブスクライブできます:
SUBSCRIBE
Topic Filter: weather/station1/temperature
QoS: 1すると、クライアントは気象観測所が最後にパブリッシュした温度データ (保持メッセージ) をすぐに受信します:
PUBLISH
Topic: weather/station1/temperature
Payload: 24.5
QoS: 1
Retain: 1 // クライアントはこれがリテインドメッセージであることを通知されます保持メッセージを使用することで、新しいクライアントは次の更新を待つことなく、すぐに温度ステータスを取得できます。これにより、システムの応答性が向上し、新しい参加者に即座にコンテキストを提供します。