akka - 我怎样才能每 5 分钟执行一次 Akka actor?

标签 akka

我想知道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/

相关文章:

akka - 用模拟对 Akka Actor 进行 spy 事件

java - 如何在不阻塞的情况下等待事件发生?

scala - 在同一规范文件中测试 akka-http 和 akka actor 时,如何解决冲突的 actor 系统?

apache-spark - Scala + SBT - 如何为着色的 Akka 库配置 reference.conf

scala - Akka:测试与 IO 管理器的交互

scala - 使用Akka Play 2.5-找不到参数超时的隐式值: akka. util.Timeout

scala - 类别类型为必填项,但找到T

java - 当 Hystrix 短路且电路开路时,即使有问题的服务备份,它也永远不会关闭

java - 使用 Java 的 Akka 中的 REST 客户端

Clojure 相当于 "Actors"