sql >> データベース >  >> RDS >> Mysql

Play javaでdbスレッドプールを作成し、このプールでdbクエリを作成する方法

    まず、ThreadPoll構成ドキュメント をご覧ください。 、まだ行っていない場合。 Playがデフォルトで使用するスレッドプールの概要と、それらを微調整する方法を説明する必要があります(クエリを実行するためだけに特定のスレッドプールは必要ない場合があります...)。

    JDBC操作に最適化されたスレッドプールを構成するためのヒントを含む、多くのヒントが含まれています。

    さて、あなたの質問に関しては、supplyAsyncを使用する必要があります カスタムのExecutorServiceを使用 あなたが必要なことをするために。例:

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

    コードから、Akkaを使用してExecutionContextを取得していることに注意してください。 (Scala)、およびsupplyAsync Executor/ExecutorServiceが必要です (Java)。したがって、ServiceExecutorを作成する必要があります 自分で共有してください

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

    または、それらの間で変換する必要があります。 この要点 それを達成するのに役立つはずです




    1. MySQLテーブルにGUIDを保存するにはどうすればよいですか?

    2. 異なるメジャーバージョンにわたるPostgresqlのpg_dumpとpg_restore?

    3. Oracleデータベースのデフォルトのユーザー名とパスワード

    4. 別の列に対してリレーションテーブルをクエリする