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

Iva*_*nko 5 scala jdbc playframework

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

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

我知道有一些类似postgresql-async的库,但是我真的很想了解机制:)

Eug*_*Loy 5

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

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

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