我想知道Akka中是否有任何机制可以让actor定期执行?
最佳答案
在 Akka 1.3.1 中,你并不真的需要一个 actor 来执行此操作,你可以安排一个函数每 5 分钟调用一次,如下所示:
Scheduler.schedule(() => println("Do something"), 0L, 5L, TimeUnit.MINUTES)
但是,如果您出于其他原因确实希望它成为 Actor ,您可以这样调用它
case class Message()
val actor = actorOf(new Actor {
def receive = {
case Message() => println("Do something in actor")
}
}).start()
Scheduler.schedule(actor, Message(), 0L, 5L, TimeUnit.MINUTES)
如果你使用 Akka 2.0 那么它会像这样完成
val system = ActorSystem("MySystem")
system.scheduler.schedule(0 seconds, 5 minutes)(println("do something"))
或者像这样每 5 分钟向 Actor 发送一条消息
case class Message()
class MyActor extends Actor {
def receive = { case Message() => println("Do something in actor") }
}
val system = ActorSystem("MySystem")
val actor = system.actorOf(Props(new MyActor), name = "actor")
system.scheduler.schedule(0 seconds, 5 minutes, actor, Message())
关于akka - 我怎样才能每 5 分钟执行一次 Akka actor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9714831/