我发现Slick 3.0引入了一个名为的新功能 streaming
http://slick.typesafe.com/doc/3.0.0-RC1/database.html#streaming
我不熟悉阿卡.streaming似乎是一个懒惰或异步的值,但我不太清楚为什么它有用,什么时候它会有用..
有没有人有这个想法?
Igo*_*iev 12
让我们想象下面的用例:
"慢"客户端希望从服务器获取大型数据集.客户端向服务器发送请求,该请求从数据库加载所有数据,将其存储在内存中,然后将其传递给客户端.
在这里我们遇到了问题:客户端处理数据的速度不是我们想要的那么快=>我们无法释放内存=>这可能会导致内存不足错误.
反应流通过使用背压解决了这个问题.我们可以将Slick的发布者包装在Akka源周围,然后通过Akka HTTP将其"提供"给客户端.
问题是这个背压通过TCP通过Akka HTTP传播到代表数据库查询的发布者.
这意味着我们只能从客户端可以消耗数据的速度读取数据库.
PS这只是一个可以应用反应流的方面.
您可以在这里找到更多信息: