サンプル コードとAkka APIを使用して高速テストを行い、うまくいきました。
2.0.4 と 2.1RC1 のコードを比較すると、スケジューラーの場合は 2 つの変更しかないことがわかります。
インポートを置き換えました
// import akka.util.duration._
import scala.concurrent.duration._
追加されたインポート:
import play.api.libs.concurrent.Execution.Implicits._
app/controllers/Application.scala
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."))
}
}
編集
グループに関する Julien の投稿からわかるように、インポートdefaultContext
のみで十分です。
import play.api.libs.concurrent.Execution.Implicits.defaultContext