Scala 将分页函数转换为流

Scala 将分页函数转换为流,scala,akka-stream,Scala,Akka Stream,我有大量的sqlite数据库,表示为Source[File,NotUsed]。对于每个db,我想对结果进行分页。内存有限意味着我不能急切地这样做。假设结果类型是Foo,那么我试图找出如何创建一个流[File,Foo,NotUsed],它在内部使用对资源的惰性递归调用 我看到Source.unfold方法允许我这样做,但它只能创建Source,这意味着我无法向它提供文件的必要输入。我看不出如何将源转换为流(除了via,但这不会通过管道传递值)。我不确定这条调查之路是否会有任何结果 有人建议我应该使

我有大量的sqlite数据库,表示为
Source[File,NotUsed]
。对于每个db,我想对结果进行分页。内存有限意味着我不能急切地这样做。假设结果类型是
Foo
,那么我试图找出如何创建一个
流[File,Foo,NotUsed]
,它在内部使用对资源的惰性递归调用

我看到
Source.unfold
方法允许我这样做,但它只能创建
Source
,这意味着我无法向它提供
文件
的必要输入。我看不出如何将
转换为
(除了via,但这不会通过管道传递值)。我不确定这条调查之路是否会有任何结果


有人建议我应该使用
GraphDSL
Merge
,但我一直在努力了解
Merge
应该有多少个输入端口,以及我实际如何将其连接在一起。

我想您正在寻找操作员:

签名 描述 将每个输入元素转换为
,然后通过串联将其元素展平到输出流中。这意味着在开始消耗下一个源之前,每个源都已完全消耗

当当前消耗的子流有可用的元素时发出

下游背压时的背压

完成当上游完成且所有消耗的子流完成时

def flatMapConcat[T, M](f: Out ⇒ Graph[SourceShape[T], M]): Repr[T]