我目前需要基于 play-framework 和 akka 的网络应用程序的持久调度。我知道akka中有演员调度,但据我所知,它没有提供持久作业的机制。因此,即使几乎一切都失败了,也必须在重新启动后加载和执行作业。这些工作通常不会是周期性的。
什么样的系统可以完成这些事情,并可能很好地集成到现有的基础设施(play、akka)中?
我目前需要基于 play-framework 和 akka 的网络应用程序的持久调度。我知道akka中有演员调度,但据我所知,它没有提供持久作业的机制。因此,即使几乎一切都失败了,也必须在重新启动后加载和执行作业。这些工作通常不会是周期性的。
什么样的系统可以完成这些事情,并可能很好地集成到现有的基础设施(play、akka)中?
似乎有一个项目能够为 Akka 进行“基于时间戳的持久调度”: https ://github.com/odd/akkax-scheduling
我们使用的是 Quartz,它是用 Java 编写的,但是有一个很好的持久性机制,可以使用 RAM 存储或一些数据库(我们使用的是 Mongo)
另一种选择是db-scheduler,我是一个持久的集群友好的任务调度程序的作者。它很容易嵌入到 JVM 应用程序中,并且只需要一个数据库表来实现持久性。(注意:它专为中小型工作负载而设计)
您可以尝试使用 Akka 中的调度机制。
http://doc.akka.io/docs/akka/2.1.4/scala/scheduler.html
例如:
//Schedules a function to be executed (send the current time) to the testActor after 50ms
system.scheduler.scheduleOnce(50 milliseconds) {
testActor ! System.currentTimeMillis
}