私はデータベース接続プールを持っています。そのプールから接続する消費者がいます。 しかし、彼らの多くは私の接続を戻していないので、私はこれらの消費者を信頼していません。したがって、プールが飢えていて、多くの消費者が無限に待たされています。例えば :例外のため、コンシューマがDB接続プールに接続を戻していません
class Consumer{
void someMethod(){
Connection con=Pool.getConnection();
//some bloody steps which throws exception
con.goodBye();//giving back the connection to the pool
}
}
との接続が常にバック与えられない傲慢のためかもしれません。私は消費者のクラスでプールapiの使用を制限する方法がありません。
私は接続を元に戻すことができますか?(私はコンシューマーを強制する方法がありません) 私はそこに愚かな証明ソリューションはないと信じています。まだ誰もが良い解決策を考え出すことができます。 私が得た1つの解決策は、Consumerクラスで例外が発生したかどうかをチェックすることです。Exceptionが発生した場合は、接続の力を完全に取り戻します。
または、このタイプの典型的なシナリオではあまり一般的ではない新しい革新的なDBPoolデザインパターンがあります(私のケースは非常に一般的だと思いますが、プールに接続を戻すのを忘れることはありません)。 )
これはプログラミングよりも管理上/管理上の問題です。キュービクルとコーディングに座っている世界のすべての問題を解決することはできません。このために、私はプログラミングの悪いクライアントのリストを作り、経営陣にこの問題を提起します。 –