オブジェクトのプールがある場合、使用が非同期である場合、使用後にプールされたオブジェクトを安全にプールに戻すにはどうすればよいですか? (この場合はFuture
andを使用)Promise
次に例を示します。
pool
.take
.flatMap {
connection =>
connection
.sendQuery("SELECT 0")
.map {
query =>
pool.giveBack(connection)
query.rows.get(0, 0)
}
}
ここでの問題は、sendQuery
呼び出しが失敗した場合、オブジェクトがプールに返されないことです。コード自体が失敗した場合でも、このオブジェクトをプールに安全に返すことを可能にする先物用の何らかのパイプライン シーケンスがありますか、またはこれを無視する必要がありますか?
ここでの私の主な目的は、プールの使用でエラーが発生しにくいようにすることです。プログラマーがオブジェクトを返すのを忘れると、プールがすぐに使い果たされる可能性があるため、現状では明らかにそうではありません。