3.5.3. 接続の Time to Live (TTL) の設定
STOMP クライアントは、接続を閉じる前に DISCONNECT
フレームを送信する必要があります。これにより、ブローカーはセッションやコンシューマーなどのサーバー側のリソースを閉じることができます。ただし、STOMP クライアントが DISCONNECT フレームを送信せずに終了する場合、または失敗すると、ブローカーにはクライアントが有効であるかどうかを即座に認識することができません。そのため、STOMP の接続は TTL(Time to Live) が 1 分となるように設定されています。複数の 1 分間の間アイドル状態であった場合、ブローカーは STOMP クライアントへの接続を停止します。
手順
-
BROKER_INSTANCE_DIR/etc/broker.xml
設定ファイルを開きます。 -
以下の例のように、STOMP 接続に使用される
acceptor
の URI にconnectionTTL
パラメーターを追加します。
<acceptors> <acceptor name="stomp-acceptor">tcp://localhost:61613?protocols=STOMP;connectionTTL=20000</acceptor> ... </acceptors>
上記の例では、stomp-acceptor
を使用するすべての STOMP 接続では、その TTL を 20 秒に設定します。
STOMP プロトコルのバージョン 1.0 には ハートビートフレーム が含まれていません。そのため、ユーザーは、データが connection-ttl 内に送信されることを確認するか、ブローカーがクライアントが停止されサーバー側のリソースをクリーンアップすることを想定します。バージョン 1.1 では、ハートビートを使用して STOMP 接続のライフサイクルを維持できます。
ブローカーのデフォルト Time to Live (TTL) の上書き
前述のように、STOMP 接続のデフォルトの TTL は 1 分です。この値は、connection-ttl-override
属性をブローカー設定に追加することで上書きできます。
手順
-
BROKER_INSTANCE_DIR/etc/broker.xml
設定ファイルを開きます。 -
connection-ttl-override
属性を追加し、新しいデフォルトの値をミリ秒単位で指定します。以下のように、<core>
スタンザに属します。
<configuration ...> ... <core ...> ... <connection-ttl-override>30000</connection-ttl-override> ... </core> <configuration>
上記の例では、STOMP 接続のデフォルトの Time to Live(TTL) は 30000 ミリ秒に設定されます。