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

问题描述:

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

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

由于背压不起作用。 OTOH通过HTTP可能是矫枉过正。

如何创建一个简单的Source对于不受背压影响的单元测试?

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

+0

啊,非常好!谢谢你,斯特凡诺。 – kostja