【发布时间】:2017-05-05 17:09:16
【问题描述】:
在 Play 2.5 应用程序中,我需要创建一个服务,该服务在一个事务中从数据库中读取大量数据,并将其作为 HTTP 响应发送给客户端。
我不想使用背压,因为网速慢会导致用于从数据库获取数据的 DB 连接使用时间过长。
我当前的实现首先将数据提取到临时缓冲区(内存或文件,如果数据过多),释放 DB 连接并返回带有数据的 Ok 响应。
这样做的缺点是,当数据完全从数据库中提取出来时,首先开始向客户端发送数据。
我认为最好将数据提取到某种来源,如果超过 10kB,它将所有数据缓冲到内存和磁盘,但它会立即将数据提供给分块响应。
我打算实现这个,但我担心我不会做对并实现一些关于多线程、阻塞等的细微错误。
在此先感谢您提供任何提示、指南、现有的开放实现...
【问题讨论】:
标签: playframework akka-stream chunked-encoding