我正在尝试将流式源缓存到磁盘,同时也将其作为HttpResponse
发送出去,即我有一个Source[ByteString,_]
我想交给HttpEntity
,但我也想将相同的数据运行到FileIO.toPath
接收器中。
|-> FileIO.toPath
Source[ByteString,_] ->|
|-> HttpEntity(contentType, Source[ByteString,_]
我似乎应该使用Broadcast
进行扇出,但根据描述,它写入两个接收器,而FileIO.toPath
是接收器,HttpEntity
期望有{{ 1}}。
还有Source
似乎可以从GraphStage创建源,例如Source.fromGraph
阶段,但我不太清楚如何获得Broadcast
下沉在那里。
答案 0 :(得分:0)
您可以使用alsoTo
:
val originalSource: Source[ByteString, _] = ???
val cachedSource: Source[ByteString, _] = originalSource.alsoTo(FileIO.toPath(/*...*/))
val entity = HttpEntity(contentType, cachedSource)