嗨,我有一个情景,其中有一个源自己生成的源。将要生成的源数量尚不清楚。是否有适当的设计模式来处理这种情况。基本上它看起来像Source -----> Multiple Sources -------> Sink
修改
此方案如下:
基本上我希望通过带有反压的流将大量数据库内容写入单独的文件
答案 0 :(得分:0)
给出Storage a;
one.toStore = ExtendedA<int, char, etc...>();
来源:
Source
可以使用Source.runForeach
将每个type Data = ???
val sos : Source[Source[Data, _], _] = ???
来源排放到单个文件接收器中。
我们首先需要一个可以生成您想要写入数据的Data
的函数:
Path
将val pathCreator : () => Path = ???
转换为Data
的方式:
ByteString
最终可以将这些功能组合起来以获得您正在寻找的行为:
val dataToByteString : Data => ByteString = ???
如果您想要val drainSourceToFile : Source[Data, _] => Future[IOResult] =
_.map(dataToByteString)
.to(FileIO.toPath(pathCreator()))
.run()
sos runForeach drainSourceToFile
中的所有IOResult
值,以便您可以知道写作是否成功,那么您需要稍微复杂的设置:
FileIO.toPath