您的位置:首页 > 其它

akka 定时任务实例for play2.1

2015-11-18 14:12 726 查看
有时需要设定将来发生的事情,这时该怎么办?ActorSystem搞定一切!

在那儿你能找到scheduler方法,它返回一个 akka.actor.Scheduler 实例, 这个实例在每个Actor系统里是唯一的,用来指定一段时间后发生的行为。

请注意定时任务是使用ActorSystem的MessageDispatcher执行的.

你可以计划向actor发送消息或执行任务的代码 (函数或Runnable).

你会得到一个Cancellable类型的返回值,你可以调用cancel来取消定时任务的执行。

package controllers

import play.api._

import play.api.mvc._

import play.libs.Akka

import akka.actor._

import scala.concurrent.duration._

import play.api.libs.concurrent.Execution.Implicits._

object Application extends Controller {

def index = Action {

// say hello

Logger.info("hello, index action started")

val Tick = "tick" val Tack = "tack"

val tickActor = Akka.system.actorOf(Props(new Actor {

def receive = { case Tick => Logger.info("that still ticks!")

case Tack => Logger.warn("... 7 seconds after start, only once")

} }))

// Repeat every 5 seconds, start 5 seconds after start

Akka.system.scheduler.schedule( 5 seconds, 5 seconds,

tickActor, Tick )

// do only once, 7 seconds after start

Akka.system.scheduler.scheduleOnce(7 seconds, tickActor, Tack)

Ok(views.html.index("Your new application is ready."))

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: