sql >> Database >  >> RDS >> Mysql

Hoe db-threadpool in Play java te maken en db-query's te maken met deze pool

Allereerst moet je de ThreadPoll-configuratiedocumenten bekijken , als je dat nog niet hebt gedaan. Het zou je een overzicht moeten geven van de threadpools die Play standaard gebruikt en hoe je ze kunt aanpassen (je hebt misschien geen specifieke threadpool nodig om alleen query's uit te voeren...).

Het bevat veel tips, waaronder tips om threadpools te configureren die zijn geoptimaliseerd voor JDBC-bewerkingen.

Nu, met betrekking tot uw vraag, hoeft u alleen maar supplyAsync . te gebruiken met een aangepaste ExecutorService om te doen wat je nodig hebt. Een voorbeeld:

public CompletionStage<Result> getData() {
    CompletableFuture<List<SqlRow>> cf = new CompletableFuture<>();
    return cf.supplyAsync(() -> {
        return Ebean.createSqlQuery("SELECT * FROM Users").findList();
    }, ec) // <-- 'ec' is the ExecutorService you want to use
    .thenApply(rows -> {
       return ok(Json.toJson(rows));
    }); 
}

Merk op dat je uit je code Akka gebruikt om een ​​ExecutionContext . te krijgen (Scala), en de supplyAsync verwacht een Executor/ExecutorService (Java). U moet dus uw ServiceExecutor . maken zelf en deel het

// Thread pool with 10 threads
ExecutorService ec = Executors.newFixedThreadPool(10);

of u zult tussen hen moeten converteren. Deze kern zou je moeten helpen dat te bereiken




  1. Na een vraag die invloed heeft op het gebruik van de DB CPU, kan ik de gegevens in de tabel verminderen, zodat ik de prestaties van de DB CPU kan verminderen?

  2. Dubbele rijen verwijderen uit tabel in Oracle

  3. Een overzicht van de Percona XtraDB Cluster Kubernetes-operator

  4. MySQL - selecteer 3 tabellen met de juiste linker join-syntaxis