如何在 scala play 框架 2.4 中定义 onStart 方法
How to define onStart method in scala play framework 2.4
如何使用 scala 在 play framework 2.4 中定义启动作业?
play framework GlobalSetting
我已经:
class StartupConfigurationModule extends AbstractModule{
override def configure(): Unit = {
Akka.system.scheduler.schedule(Duration(0,duration.HOURS),Duration(24,duration.HOURS))(Id3Service.start())
Akka.system.dispatcher
}
}
您需要在应用程序的 modules.enabled
中(在 application.conf
中)进行注册。
它应该安排调用在 0 小时后启动 Id3Service,然后每 24 小时调用一次。
问题是模块没有声明对 运行 应用程序的依赖,或者更有趣的是,对启动的 actorSystem 的依赖。 Guice 可以决定在应用程序初始化之前启动它。
以下是强制依赖已初始化的 actorSystem 的一种方法(并减少依赖的足迹)
import javax.inject.{ Singleton, Inject }
import akka.actor.ActorSystem
import com.google.inject.AbstractModule
import scala.concurrent.duration._
class StartupConfigurationModule extends AbstractModule {
override def configure(): Unit = {
bind(classOf[Schedule]).asEagerSingleton()
}
}
@Singleton
class Schedule @Inject() (actorSystem: ActorSystem) {
implicit val ec = actorSystem.dispatcher
actorSystem.scheduler.schedule(Duration(0, HOURS), Duration(24, HOURS))(Id3Service.start())
}
object Id3Service {
def start(): Unit = println("started")
}
如何使用 scala 在 play framework 2.4 中定义启动作业? play framework GlobalSetting 我已经:
class StartupConfigurationModule extends AbstractModule{
override def configure(): Unit = {
Akka.system.scheduler.schedule(Duration(0,duration.HOURS),Duration(24,duration.HOURS))(Id3Service.start())
Akka.system.dispatcher
}
}
您需要在应用程序的 modules.enabled
中(在 application.conf
中)进行注册。
它应该安排调用在 0 小时后启动 Id3Service,然后每 24 小时调用一次。
问题是模块没有声明对 运行 应用程序的依赖,或者更有趣的是,对启动的 actorSystem 的依赖。 Guice 可以决定在应用程序初始化之前启动它。
以下是强制依赖已初始化的 actorSystem 的一种方法(并减少依赖的足迹)
import javax.inject.{ Singleton, Inject }
import akka.actor.ActorSystem
import com.google.inject.AbstractModule
import scala.concurrent.duration._
class StartupConfigurationModule extends AbstractModule {
override def configure(): Unit = {
bind(classOf[Schedule]).asEagerSingleton()
}
}
@Singleton
class Schedule @Inject() (actorSystem: ActorSystem) {
implicit val ec = actorSystem.dispatcher
actorSystem.scheduler.schedule(Duration(0, HOURS), Duration(24, HOURS))(Id3Service.start())
}
object Id3Service {
def start(): Unit = println("started")
}