如何创建不受背压影响的源
How to create a Source which is not affected by backpressure
我想测试一些 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。
我想测试一些 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。