在Akka Streams中,is Sink.fold()正在序列化处理



我开始使用Akka流;我正在尝试创建一个流,从web服务读取数据,然后在S3中持久化它们。我想知道,如果我使用Sink.fold方法(为了收集有关持久化元素的信息)为持久化定义一个Sink,发送到Sink的元素是要一个接一个地处理,还是并行处理?

这是一个基本问题,但我没能在文件中找到确切的答案。

由于Sink.fold需要前一个元素的结果来将其与下一个元素组合,因此它必须是连续的。

实际上,它更像是一个Sink.foldLeft

换句话说,如果有a, b作为元素,并使用f折叠它们,则需要acc = f(zero, a)才能处理f(acc, b)。因此,在对a的处理完成之前,不能处理b

来自api文档:

一个Sink,它将为每个接收到的元素调用给定的函数,将其先前的输出(或给定的零值)和元素作为输入。当输入流结束时,返回的java.util.concurrent.CompleteionStage将以最终函数求值的值完成,或者如果流中发出故障信号,则以Failure完成。

最新更新