Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tạo db threadpool trong Play java và thực hiện các truy vấn db với pool này

Trước hết, bạn nên xem tài liệu về Cấu hình ThreadPoll , nếu bạn chưa làm điều đó. Nó sẽ cung cấp cho bạn cái nhìn tổng quan về các nhóm luồng mà Play sử dụng theo mặc định và cách tinh chỉnh chúng (bạn có thể không cần một nhóm luồng cụ thể chỉ để thực hiện các truy vấn ...).

Nó chứa rất nhiều mẹo, bao gồm cả mẹo để định cấu hình nhóm luồng được tối ưu hóa cho hoạt động của JDBC.

Bây giờ, về câu hỏi của bạn, bạn chỉ cần sử dụng supplyAsync với ExecutorService tùy chỉnh để làm những gì bạn cần. Ví dụ:

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

Lưu ý rằng từ mã của bạn, bạn đang sử dụng Akka để lấy ExecutionContext (Scala) và supplyAsync mong đợi một Executor/ExecutorService (Java). Vì vậy, bạn sẽ phải tạo ServiceExecutor của mình của chính bạn và chia sẻ nó

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

hoặc bạn sẽ phải chuyển đổi giữa chúng. Ý chính này sẽ giúp bạn đạt được điều đó




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tốt nhất để lưu trữ danh sách có thứ tự trong cơ sở dữ liệu?

  2. Spark SQL và MySQL- SaveMode.Overwrite không chèn dữ liệu đã sửa đổi

  3. Lỗi nhật ký nhị phân trong mysql

  4. tìm kiếm từ khóa mysql

  5. Làm cách nào để tìm ra URL, máy chủ, cổng và tên người dùng MySQL của tôi?