【问题标题】:How to create an Akka Stream Flow that pauses until a flag is lowered?如何创建一个暂停直到降低标志的 Akka Stream Flow?
【发布时间】:2019-12-05 00:45:06
【问题描述】:

我想创建一个 Akka Streams Flow,它将消耗一个元素并保持它直到降低标志。

想要的效果如下图所示,但我意识到这不是一个好的解决方案。

val flow: Flow[Int, Int, NotUsed] = {
     Flow[Int] map { i =>
       if (flagIsRaised) { waitUntilFlagIsLowered(); i}
       else { i }
     }
}

例如,我不希望waitUntilFlagIsLowered 阻止。

理想情况下,我想要一个惯用的 Akka Streams 解决方案,可以使用 standard Akka Streams operators

【问题讨论】:

    标签: scala akka akka-stream


    【解决方案1】:

    查看Akka Streams Contrib 项目中的Valve 实用程序:

    物化为ValveSwitch 的Future,它提供了一个方法flip 来停止或重新启动通过舞台的元素流。只要阀门关闭,它就会背压。

    如何使用它的示例在ValveSpec

    【讨论】:

    • 非常感谢您,杰弗里!我会检查一下。我会在周末不回答这个问题,以便有时间回答任何其他问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多