如何创建不受背压影响的源

时间:2017-05-03 18:36:15

标签: scala akka akka-stream backpressure

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

Source.tick(1.milli, 1.milli, "tick").map(_ => Random.nextDouble())

因背压而无法工作。通过HTTP的OTOH可能有点过分。

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

1 个答案:

答案 0 :(得分:2)

你可以使用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找到。