Ich brauche Verbindungen zu einer Ressource. Die tatsächliche Ressource ist für diese Diskussion nicht wichtig. Die Sache ist jedoch, dass diese Verbindungen nicht threadsicher sind, daher ist die Notwendigkeit des Bündelns als Verbinden etc. eine teure Operation.Gibt es Pooling-Lösungen, die es ermöglichen, dass ein Schlüssel an die Übernahme/Take-Methode übergeben wird
Meine ursprüngliche Idee war für einen großen Pool, der das Timing von Verbindungen verwaltet und sie etc. abtötet. Das Problem ist jedoch, dass jede Verbindung einen anderen Parameter enthalten kann. Daher ist es notwendig, den Parameter zu übergeben Der Pooler versucht damit, eine Verbindung mit dem gleichen Wert zu finden. Wenn es (der Pool) das Objekt nicht finden konnte, muss es eine Instanz erstellen, die den Parameter natürlich usw. übergibt.
Allerdings Apache Commons Pools und ähnliche Bibliotheken haben keine Vorkehrungen für diese Art von Konzept. Gibt es Bibliotheken, die diese Art von Konzept enthalten? Ich nehme an, unterhalb des Pools befindet sich eine Liste von Instanzen und wenn eine Take-Anfrage kommt, benutzt sie einen Matcher, um ihre verfügbaren Objekte zu durchlaufen und gibt den ersten zurück, der übereinstimmt.
Beachten Sie, dass es nicht möglich ist, den Parameter des Verbindungsobjekts zu ändern, daher das Problem und der Grund für die gestellte Frage.
- Gibt es einen besseren Weg, dieses Problem zu lösen?
- Gibt es eine Pooling-Bibliothek, die das oben genannte tut?
- Soll ich nur meine eigene schreiben?
warum können Sie nicht nur diff-Pools konfigurieren für diff-Parameter. haben eine Fassade für den Zugang zu all diesen Pools. Wenn die Fassade weiß, dass es keinen Pool für den gegebenen Eingabeparameter gibt, würde sie einen On-the-Fly erstellen –
Weil es zu viele verschiedene Parameter gibt, was viele und viele Pools bedeuten würde. Wie ich in anderen Kommentar erwähnt habe - ich glaube, dass Apache Commons Pools nicht billig sind, da jeder Pool seinen eigenen Cleanup-Thread erstellt. Von meinem schnellen Blick scheint es nicht eine einfache Möglichkeit zu sein, ACP dazu zu bringen, den Aufräum-Thread zu teilen, so dass jede Poolerstellung mehr oder weniger eine billige Warteschlange mit einem Hintergrundaufreinigungs-Thread und der Lifecycle-Management-Sache ist. –