Play&Akka和阻止线程进行数据库访问

Joh*_*ith 7 scala nonblocking akka playframework-2.0

我想调用一个包含大量数据的数据库,可能需要一段时间才能返回.

我打算在调用Akka.future(f)的过程中完成这项工作,并在完成工作时使用Async {}来呈现响应.

这样做是否有意义,或者我应该只在控制器中进行长数据库调用,而不将工作发送到Akka?

或者有没有办法进行非阻塞数据库访问?

spi*_*den 1

如果响应在数据库调用完成时被阻止,那么只有当您可以在调用运行时完成组装响应的其他工作时,使其异步才有用。

非阻塞数据库访问可能意味着几个不同的事情:一个为您提供基于回调的 API 的客户端库,这与未来的解决方案非常相似,或者使用非阻塞套接字来节省线程使用量的客户端库。我假设你指的是前者,在这种情况下,我认为它在功能上等同于使用 future。