【问题标题】:Akka scheduler not completingAkka 调度程序未完成
【发布时间】:2017-11-16 17:01:33
【问题描述】:

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

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 毫秒, 5 分钟, senderActor, doSomething()) 读取线()
  2. 在其后面加上Thread.sleep()

    val sendSchedule = system.scheduler.schedule(0 毫秒, 5 分钟, senderActor, doSomething()) 线程.sleep(10000)

调度程序不能按照上面的代码运行是否有原因?为什么它需要睡眠才能工作?

【问题讨论】:

    标签: scala akka scheduler actor


    【解决方案1】:

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

    【讨论】:

    • 有道理。我删除了 system.terminate() 并看到了该过程。但是在计划任务完成之前,try 块不应该保持活动状态吗?谢谢
    • 没有@F.Lun,system.scheduler.schedule 立即返回,不会阻塞调用者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    相关资源
    最近更新 更多