Servlet中使用java 9 Flow的反应流用例?

gre*_*egw 11 servlets jetty reactive-programming reactive-streams java-9

我正在寻找在servlet容器(或只是HTTP服务器)中使用反应流的用例.

码头项目已开始被问:"是码头反应" 我们已经注意到将反应流添加到java 9 的提议.

所以我们已经开始使用反应流API进行异步servlet IO的一些实验,这很有趣.....但没有任何关注,因为我们缺乏真正的用例来关注哪些问题最重要.

那么,任何人都有任何可以分享/解释的好用例,以便我们可以指导我们的码头实验来满足他们的需求.我想象的那种事情是让一个基于RS的数据库发布者在HTTP响应或websocket连接上一直发送对象,使用Flow.Processors进行转换.

Chr*_*unt 6

一个可行的用例是在使用多部分表单数据的POST时,特别是在上载文件时.

类型安全ConductR项目(免责声明:我是它的技术主管),当用户加载一个包,接收多部分表单数据.我们使用akka-streams/http.

我们读取了流的前两部分,因为我们的协议指定它们必须声明一些元数据,以便我们知道将包写入哪个节点.经过一些验证后,我们确定要将它们写入的节点,并连接部分消耗的流.因此,接收上传束的请求的节点协商它将要写入哪个节点,而不必消耗整个流(可能是200MB)然后再将其写出来.

写出多部分表单数据也是一个很好的用例,因为您可以将文件从磁盘作为源流传输并传递给某个http端点,即我在上面描述的客户端.

这两种用例的好处是可以最大限度地减少通过网络移动字节所需的内存量,并且只在必要时执行文件IO.