关闭

akka 定时任务实例for play2.1

1435人阅读 评论(0) 收藏 举报
分类:



    有时需要设定将来发生的事情,这时该怎么办?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."))  
}
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:86154次
    • 积分:1371
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:152篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论