【发布时间】:2023-03-06 22:53:02
【问题描述】:
我正在尝试在 play framework 2.4.x 中创建调度程序。我能够创建调度程序,但无法配置当前的应用程序环境。
基本上,调度程序应该执行一个控制器方法或调用一个 URL。
到目前为止,我得到了这个:
object Global extends GlobalSettings {
override def onStart(app: Application) {
System.out.println("App Started");
import play.api.Play.current
var delayInSeconds: Long = 0l;
var c: Calendar = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, current.configuration.getInt("application.execution.hour").getOrElse(8))
c.set(Calendar.MINUTE, current.configuration.getInt("application.execution.min").getOrElse(0))
c.set(Calendar.SECOND, 0);
var plannedStart: Date = c.getTime();
var now: Date = new Date();
var nextRun: Date = null;
if (now.after(plannedStart)) {
c.add(Calendar.DAY_OF_WEEK, 1);
nextRun = c.getTime();
} else {
nextRun = c.getTime();
}
delayInSeconds = (nextRun.getTime() - now.getTime()) / 1000; //To convert milliseconds to seconds.
var delay: FiniteDuration = Duration(delayInSeconds, TimeUnit.SECONDS);
var frequency: FiniteDuration = Duration(1, TimeUnit.DAYS);
val schedulerActor = Akka.system(app).actorOf(Props[SchedulerActor], name = "schedulerActor")
Akka.system(app).scheduler.schedule(delay, frequency, schedulerActor, Scheduler);
}
}
case object Scheduler
class SchedulerActor extends Actor {
def receive = {
case Scheduler => executeSchedulerWorkflows
}
def executeSchedulerWorkflows = {
}
}
在def executeSchedulerWorkflows 内部我想做类似的事情:
def executeSchedulerWorkflows = {
WS.client(url)
}
注入 WS。该怎么做?
【问题讨论】:
标签: scala playframework akka playframework-2.4