Java 使用Akka每天运行playframework任务

Java 使用Akka每天运行playframework任务,java,akka,actor,playframework-2.2,Java,Akka,Actor,Playframework 2.2,我正在寻找在Java PlayFramework中使用Akka Aktor的简单示例/手册/教程。 我已经尝试过本教程: 但我不能让它编译 我想在每24小时计算一些数据,并从系统发送电子邮件。我想用它来做阿克托 我使用playFramework 2.2.x无论如何,在2.1中有一个示例更改了(主要是导入)我的工作解决方案(用于playFramework 2.2.4)基于post: /app/Global.java中的My Global.java类 import org.joda.time.Dat

我正在寻找在Java PlayFramework中使用Akka Aktor的简单示例/手册/教程。 我已经尝试过本教程: 但我不能让它编译

我想在每24小时计算一些数据,并从系统发送电子邮件。我想用它来做阿克托

我使用playFramework 2.2.x

无论如何,在2.1中有一个示例更改了(主要是导入)

我的工作解决方案(用于playFramework 2.2.4)基于post:

/app/Global.java中的My Global.java类

import org.joda.time.DateTime;
import org.joda.time.Seconds;

import actions.ValidateApplicationLicence;
import akka.actor.ActorRef;
import akka.actor.Props;
import play.Application;
import play.GlobalSettings;
import play.Logger;
import play.libs.Akka;
import scala.concurrent.duration.Duration;

import java.util.concurrent.TimeUnit;

public class Global extends GlobalSettings {

    //ActorRef myActor = Akka.system().actorOf(new Props(ValidateApplicationLicence.class));

    @Override
    public void onStart(Application application) {

        Akka.system().scheduler().schedule(
                Duration.create(20, TimeUnit.SECONDS),
                Duration.create(5, TimeUnit.SECONDS),
                new Runnable() {
                    @Override
                    public void run() {
                        Logger.info("After 10 sec and after EVERY 5 sec  ---    " + controllers.common.Index.getDate(null));
                    }
                },
                Akka.system().dispatcher()
        );

        Akka.system().scheduler().scheduleOnce(
                Duration.create(10, TimeUnit.MILLISECONDS),
                new Runnable() {
                    public void run() {
                        Logger.info("ON START ---    " + controllers.common.Index.getDate(null));
                    }
                },
                Akka.system().dispatcher()
        );
//      Akka.system().scheduler().schedule(
//                Duration.create(0, TimeUnit.MILLISECONDS), //Initial delay 0 milliseconds
//                Duration.create(30, TimeUnit.MINUTES),     //Frequency 30 minutes
//                myActor,
//                "tick",
//                Akka.system().dispatcher(),
//                null
//        );
    }
    public static int nextExecutionInSeconds(int hour, int minute){
        return Seconds.secondsBetween(
                new DateTime(),
                nextExecution(hour, minute)
        ).getSeconds();
    }

    public static DateTime nextExecution(int hour, int minute){
        DateTime next = new DateTime()
                .withHourOfDay(hour)
                .withMinuteOfHour(minute)
                .withSecondOfMinute(0)
                .withMillisOfSecond(0);

        return (next.isBeforeNow())
                ? next.plusHours(24)
                : next;
    }
}