Akka Stream:解压缩和广播有什么区别?

时间:2019-03-21 10:25:58

标签: scala stream akka akka-stream

我正在尝试实现以下目标:

graph

我正在尝试使用Flow.fromGraph

创建此流程
  • 我可以使用join来进行Zip[B, C],它可以吸收2个流
  • 我可以通过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)

这可能有助于内部缓冲区/背压吗?

0 个答案:

没有答案