【发布时间】:2016-02-19 16:27:33
【问题描述】:
我们使用 Slick (2.1.0) 和 Spray-io (1.3.3)。目前我们面临一个问题,因为我们对 Spray HTTP API 部分和访问同一数据库的后台运行作业使用相同的执行上下文。所有数据库/阻塞调用都使用相同的 scala.concurrent.ExecutionContext.global 执行上下文包装在期货中。
当后台作业开始执行繁重的工作时,它们会消耗所有可用线程,这将导致 API 端超时,因为它们不是任何可用线程来处理 API 工作。 显而易见的解决方案是对两个部分使用不同的执行上下文,总线程数不高于配置的 DB 连接池 (HikariCP)。 (正如这里https://www.playframework.com/documentation/2.1.0/ThreadPools#Many-specific-thread-pools 部分建议的那样)但是在执行上下文与数据库配置本身相关联的 Slick 3 中,这样的设置如何工作?
【问题讨论】:
标签: multithreading scala slick spray slick-3.0