我的项目使用游戏框架2.3,需要每10分钟计算一次市场上列出的用户物品的实时价格(物品的价格根据销售类型的数量而变化)股)。我用演员这样做。但是,我有一个问题
如何在项目启动时启动作业,我还可以在代码中停止作业?
Akka.system.scheduler.schedule(0.microseconds, 10.minutes, tickActor, "job")
package job.scheduledJobs
import akka.actor.Actor
class JobModule extends Actor {
override def preStart() {
println("makeRealTimePrice Job start!!")
}
override def receive: Receive = {
case "job" =>
//calculate price
case _ => Unit
}
}
class TradingHandler(override implicit val env:
RuntimeEnvironment[SystemUser]) extends
securesocial.core.SecureSocial[SystemUser] with CookieLang {
def job() = Action {
implicit request =>
val tickActor = Akka.system.actorOf(Props(new JobModule))
val cancellable1 = Akka.system.scheduler.schedule(0.microseconds, 10.minutes, tickActor, "job")
Ok("success")
}
}
答案 0 :(得分:0)
我认为您正在寻找the Global object,其中您可以挂钩应用程序启动和停止事件以触发事物。根据我的理解,您需要在Global中包含存储Cancellable
的值,而onStop
回调可以在应用程序停止时取消它。
答案 1 :(得分:0)
在我看来,你有两种可能性:
Akka演员创作起来很便宜,所以我相信你应该为每个客户实例化一个演员而不是所有客户都有一个演员。