Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak utworzyć pulę wątków db w Play java i tworzyć zapytania db za pomocą tej puli?

Przede wszystkim zapoznaj się z dokumentacją dotyczącą konfiguracji ThreadPoll , jeśli jeszcze tego nie zrobiłeś. Powinien dać ci przegląd pul wątków, których Play używa domyślnie i jak je dostosować (możesz nie potrzebować określonej puli wątków tylko do wykonywania zapytań...).

Zawiera wiele wskazówek, w tym wskazówki dotyczące konfigurowania pul wątków zoptymalizowanych pod kątem operacji JDBC.

Teraz, jeśli chodzi o twoje pytanie, wystarczy użyć supplyAsync z niestandardową usługą ExecutorService robić to, czego potrzebujesz. Przykład:

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));
    }); 
}

Zauważ, że ze swojego kodu używasz Akka, aby uzyskać ExecutionContext (Scala) i supplyAsync oczekuje Executor/ExecutorService (Jawa). Musisz więc utworzyć swój ServiceExecutor samodzielnie i podziel się nim

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

albo będziesz musiał dokonać konwersji między nimi. Ten sedno powinien pomóc ci to osiągnąć




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. wykonać php przez mysql?

  2. Jak posortować to zapytanie MySQL

  3. enum lub char(1) w MySQL

  4. WYBIERANIE z wieloma warunkami WHERE w tej samej kolumnie

  5. Alternatywa MySQL dla T-SQL'a WITH TIES