我正在尝试实现以下目标:
我正在尝试使用Flow.fromGraph
join
来进行Zip[B, C]
,它可以吸收2个流split
:
Broadcast[A](2)
UnZip[(A,A)]
,后跟.map(a -> (a, a))
map(f1)
和map(f2)
都是我从包含的库中获取的自定义流,因此我无法真正对其进行修改,所以请不要说.map(a => (f1(a), f2(a)))
这两种情况之间的区别是什么,或者是相同的?我发现唯一不同的是Broadcast
仅在 all 下游取消时才具有取消的能力({{1} }),这是它的默认行为,与eagerCancel = false
(广播对UnZip
的行为)相反
此外,如果两条路径中的任何一条发生故障,该怎么办?也就是说,如果对于特定元素,f1引发错误会产生什么影响?
另外,假设如果我们没有eagerCancel = true
函数(因此没有映射操作)并且我们想在末尾发出f2
,则应将f2替换为身份流,还是可以一起被跳过吗? (如果是后者,您会曾经使用身份流吗?)
(b,a)
这可能有助于内部缓冲区/背压吗?