我有一個數據庫連接池。有消費者從該游泳池獲取連接。 但我不能相信這些消費者,因爲他們中的很多人都沒有返回我的連接。因此游泳池捱餓,許多消費者被迫等待無限。 例如:消費者沒有返回連接到我的數據庫連接池
class Consumer{
void someMethod(){
Connection con=Pool.getConnection();
//some bloody steps which throws exception
con.goodBye();//giving back the connection to the pool
}
}
由於異常的,可能是因爲傲慢的連接沒有給予回覆永遠的。我無法限制消費者階層使用Pool api。 (我沒有辦法強制消費者) 我相信這裏沒有傻瓜證明的解決方案(可能不是那麼聰明)。任何人都可以想出一個很好的解決方案。 我得到的一個解決方案是檢查消費者類是否發生任何異常,如果發生異常,然後完全收回連接力。
或者是否有任何新的革命性DBPool設計模式在這種典型場景中不是非常流行(即使我認爲我的案例非常通用,任何人都可以忘記將連接還給池。 )
這比編程更爲行政/管理問題。你無法解決世界上坐在隔間和編碼中的所有麻煩。對於這一個,我會編制一個可憐的程序客戶名單,並提出與他們的管理這個問題。 – 2012-02-08 13:31:28