我想测试一些 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 中找到.
关于scala - 如何创建不受背压影响的 Source,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43767664/