Akka Stream - 如何在KillSwitch触发时确保缓冲区中的所有消息都被刷新为Sink

时间:2018-02-21 18:36:09

标签: scala akka akka-stream

我有一个简单的流,有一个源,两个流和一个接收器。这两个流程都有一个带有背压策略的缓冲区。

buffer(bufferSize, OverflowStrategy.backpressure))

该流看起来像:

source ~> flow1(buffer) ~> flow2(buffer) ~> sink

现在,我试图添加一个kill开关来安全地关闭流。

似乎KillSwitch需要作为流程的一部分注入:

viaMat(KillSwitches.single)(Keep.right)

我有三个问题:

  1. 当我触发kill开关时,将首先停止源 水槽赢了不输消息?如果没有,我该如何确定 是什么?
  2. 当我触发kill开关时,是否会刷新缓冲的元素并成功到达接收器?如果没有,我该如何确定?

  3. 我应该将kill开关的哪一部分插入?是吗     总是在源头之后?杀戮开关的位置如何影响     流完成?

  4. Akka documentation并没有真正解释KillSwitch的行为......

0 个答案:

没有答案