技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

定期実行処理を書く

一番手っ取り早いのは Global の onStart に仕掛ける方法

import play.api.libs.concurrent.Akka
import play.api.{Application, GlobalSettings}
import scala.concurrent.duration.DurationLong

object Global extends GlobalSettings {

  override def onStart(application:Application) {
    import play.api.libs.concurrent.Execution.Implicits._
    Akka.system(application).scheduler.schedule(30.seconds, 30.minute) {
      /* ここに 30 分置きに実行される処理を書く */
    }
  }
}

使ってるのはAkkaで、その設定は application.conf に書ける。 ご存知のように Akka が使えるという事は、Actor も書ける。

class RssLoadActor extends Actor {
  def receive = {
    case url:String => // 何かの処理
  }
}

val rssLoadActor = Akka.system(application).actorOf(Props(new RssLoadActor))

我が世の春がきたぁああああ