FlowOps#concat
的文档说明了
...... Source与此Flow一起实现,并且通过断言背压直到它的时间到来而不再产生元素。
换句话说,如果我有
sourceA.concat(sourceB)
然后sourceB
将与sourceA
同时具体化。
在sourceB
完成之前,如何推迟实现sourceA
?
我正在使用Akka 2.5.6。
答案 0 :(得分:1)
您是否尝试使用Source.lazily()
?
以下是scala doc所说的内容:
创建一个
Source
,在有下游需求之前没有实现,当源实现物化未来完成时带有其值,如果下游取消或失败而没有任何需求,则永远不会调用创建工厂并且物化Future
失败。
另请参阅:https://doc.akka.io/docs/akka/2.5.6/scala/stream/stages-overview.html#lazily
那是:
sourceA.concat(Source.lazily(() => sourceB))