我想使用akka Streams'来构建一个项目序列。 ActorRefSource。所述源连续地输入数据。计算完成后,Stream将使用Poison Pill终止。
以下简化示例显示了我的意图:
val source = Source.actorRef[Int](1000, OverflowStrategy.fail)
.mapMaterializedValue{ ref =>
for(i <- 1 to 1000) {
ref ! i
}
ref ! PoisonPill
}
source.runWith(Sink.seq).foreach(s => println("count: "+s.size))
我期待Stream处理所有1000个元素,然后由于收到Poison Pill而终止。不幸的是,Stream通常会更早地终止。示例输出是:
count: 24
在发送毒丸之前等待一段时间,例如1000毫秒导致所有数字都被处理。
如果在收到Poison Pill之前如何确保所有物品都已经过处理,我们将非常感谢。