【问题标题】:How to create a Source which is not affected by backpressure如何创建不受背压影响的 Source
【发布时间】:2017-05-03 18:36:15
【问题描述】:

我想测试一些 Akka 流功能,例如 conflate。为此,我需要在一个简单的单元测试中构建一个不受背压影响的源。像

这样的幼稚尝试
Source.tick(1.milli, 1.milli, "tick").map(_ => Random.nextDouble())

由于背压而无法工作。 OTOH 通过 HTTP 可能是矫枉过正。

如何为不受背压影响的单元测试创​​建简单 Source

【问题讨论】:

    标签: scala akka akka-stream backpressure


    【解决方案1】:

    您可以使用Source.actorRef,这是设计上未启用背压的。请看下面的例子:

      val actorRef: ActorRef = Source.actorRef(0, OverflowStrategy.dropNew)
          .map(_ => Random.nextDouble())
          .to(yourSink).run()
    
      system.scheduler.schedule(1.milli, 1.milli, actorRef, "tick")(system.dispatcher)
    

    bufferSize 参数和溢出策略在这里是随机选择的,你需要根据你的测试需要调整它们。

    有关Source.actorRef 的更多信息,请访问docs

    【讨论】:

    • 啊,非常好!谢谢你,斯特凡诺。
    猜你喜欢
    • 2014-01-29
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    相关资源
    最近更新 更多