scala - 在 Play 中以非阻塞方式使用 JDBC 有哪些选项?

标签 scala jdbc playframework

我想知道在 Play 中执行非阻塞 JDBC 查询的最佳(推荐、批准等)方法是什么!使用 Play 的连接池的应用程序(在 Scala 和 PostgreSQL 中,如果重要的话)?我知道 JDBC 本身肯定是阻塞的,但肯定有一些方法可以在单独的线程中进行调用(例如使用 futures 或 actor)以避免阻塞调用线程。

假设我决定将调用包装在 futures 中,我应该使用哪个执行上下文,Play 的默认执行上下文?或者最好创建单独的执行上下文来处理数据库查询?

我知道有一些库可以实现此目的,例如 postgresql-async ,但我真的很想了解其中的机制:)

最佳答案

Suppose I decided to wrap the calls in futures, which execution context should I use, the Play's default one? Or it's better to create separated execution context for handling DB queries?

在这种情况下最好使用单独的执行上下文。这样,提交到默认执行上下文的非阻塞作业(大多数默认 Play 的内容)就不会因提交到同一执行上下文的作业中的阻塞 JDBC 调用而受到干扰。

我建议阅读this (尤其是第二部分)以大致了解如何在不同情况下处理执行上下文(包括阻塞数据库查询的情况),然后引用 this获取有关在 Play 中配置场景的更多详细信息。

关于scala - 在 Play 中以非阻塞方式使用 JDBC 有哪些选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26177491/

相关文章:

scala - 参数化类中的类型不匹配 - 但为什么呢?

eclipse - 稳定的 Scala 2.8 插件

scala - http4s - 如何创建线程数有限的 blaze 客户端?

java - 如何使用 JDBC 在一个事务中执行 2 个更新查询

java - 运行jdbc程序而不每次都设置类路径

javascript - Play 框架删除请求

java - Play Framework - java.lang.RuntimeException : No main class detected

scala - build.sbt 中的 Lagom 属性

java - 使用 Eclipse Indigo 在 Java 中连接 DB2 Express-C

java - @Required 验证消息