Akka调度程序未完成

时间:2017-11-16 17:01:33

标签: scala akka scheduler actor

我需要以特定的间隔向演员发送消息。我使用以下代码:

object SendToActor extends App {

  import Sender._

  val system: ActorSystem = ActorSystem("sender")

  try {
    val senderActor: ActorRef = system.actorOf(Sender.props, "sendActor")
    val sendSchedule =
      system.scheduler.schedule(0 milliseconds, 5 minutes, senderActor, doSomething())
  } finally {
    system.terminate()
  }
}

不幸的是,除非我执行以下操作之一,否则调度程序似乎无法运行:

  1. 在它之后放一个readLine()

    val sendSchedule = system.scheduler.schedule(0 milliseconds, 5 minutes, senderActor, doSomething())
    readLine()
    
  2. 在它之后放一个Thread.sleep()

    val sendSchedule = system.scheduler.schedule(0 milliseconds, 5 minutes, senderActor, doSomething())
    Thread.sleep(10000)
    
  3. 为什么调度程序不能像上面那样运行?为什么它需要睡眠才能工作?

1 个答案:

答案 0 :(得分:3)

可能是因为您在定义调度程序后立即终止了actor系统。