第9章 デッド接続の検出
場合によっては、クライアントが予期せず停止し、クライアントのリソースをクリーンアップする機会がなくなることがあります。これが起こると、リソースが障害状態のままになり、ブローカーのメモリーやその他のシステムリソースが不足する可能性があります。非アクティブなサーバー側リソースをクリーンアップするまで AMQ Broker が待機する期間を設定できます。
9.1. デッド接続の検出 リンクのコピーリンクがクリップボードにコピーされました!
ブローカーは、ガベージコレクション時にクライアントの接続が適切にシャットダウンされなかったことを検出します。その後、コネクションは閉じられ、以下のようなメッセージがログに書き込まれます。ログは、クライアントセッションがインスタンス化されたコードの正確な行を取得します。これにより、エラーを特定し、これを修正できます。
[Finalizer] 20:14:43,244 WARNING [org.apache.activemq.artemis.core.client.impl.DelegatingSession] I'm closing a JMS Conection you left open. Please make sure you close all connections explicitly before let
ting them go out of scope!
[Finalizer] 20:14:43,244 WARNING [org.apache.activemq.artemis.core.client.impl.DelegatingSession] The session you didn't close was created here:
java.lang.Exception
at org.apache.activemq.artemis.core.client.impl.DelegatingSession.<init>(DelegatingSession.java:83)
at org.acme.yourproject.YourClass (YourClass.java:666) //
クライアントとサーバー間のネットワーク接続が失敗しても、その後オンラインに戻ることがあります。その場合は、クライアントが再接続できるようになります。そのため、AMQ Broker は非アクティブなサーバー側リソースのクリーンアップを待機します。この待機時間は Time to Live (TTL) と呼ばれます。ネットワークベースの接続のデフォルトの TTL は 60000 ミリ秒 (1 分 ) です。in-VM 接続のデフォルトの TTL は -1 です。つまり、ブローカーはブローカー側で接続をタイムアウトしません。