我想测试一些 Akka 流功能,例如conflate
. 为此,我需要在一个简单的单元测试中构建一个不受背压影响的源。天真的尝试
Source.tick(1.milli, 1.milli, "tick").map(_ => Random.nextDouble())
由于背压而无法工作。OTOH 通过 HTTP 可能是矫枉过正。
如何为不受背压影响的单元测试创建一个简单的? Source
我想测试一些 Akka 流功能,例如conflate
. 为此,我需要在一个简单的单元测试中构建一个不受背压影响的源。天真的尝试
Source.tick(1.milli, 1.milli, "tick").map(_ => Random.nextDouble())
由于背压而无法工作。OTOH 通过 HTTP 可能是矫枉过正。
如何为不受背压影响的单元测试创建一个简单的? Source
您可以使用Source.actorRef
which is - by design - not backpressure-enabled。请参见下面的示例:
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中找到。