akka/akka-core
在 GitHub 查看Scheduled Source with 0 initialDelay is using interval as initialDelay
Open
#18,383 创建于 2015年9月1日
1 - triagedhelp wantedt:stream
描述
The test app below with initialDelay = 0.nanos prints this:
root 2015-09-01T16:28:12.209Z BEFORE
root 2015-09-01T16:28:17.317Z TICK
-> applied initialDelay is ~5 seconds which is clearly unexpected
now change to initialDelay = 1.nanos and you get
root 2015-09-01T16:28:38.760Z BEFORE
root 2015-09-01T16:28:38.889Z TICK
-> initialDelay is correctly applied
import java.time.Instant
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.{Sink, Source}
import scala.concurrent.duration._
object BugInitialDelay extends App{
import scala.concurrent.ExecutionContext.Implicits.global
implicit val system = ActorSystem("foo")
implicit val materializer = ActorMaterializer()
println(Instant.now() + " BEFORE")
Source(initialDelay = 0.nanos, interval = 5.seconds, tick = ()).take(1).map{ tick =>
println(Instant.now() + " TICK")
}.runWith(Sink.ignore).onComplete { _ =>
system.shutdown()
}
}