Ежедневно с Akka выполняем задание на игровой площадке

1

Я ищу простой пример /manual/tutoral использования Akka Aktor в PlayFramework с Java. Я уже пробовал этот учебник: https://www.playframework.com/documentation/2.2.x/JavaAkka, но я не могу его скомпилировать.

Я хотел бы подсчитать каждые 24 часа некоторые данные и отправить электронное письмо от системы. Я бы хотел использовать для этого Aktor.

Я использую playFramework 2.2.x

Теги:
akka
actor
playframework-2.2

2 ответа

2
Лучший ответ

Мое рабочее решение (для playFramework 2.2.4) на основе сообщения: qaru.site/questions/376422/...

Мой класс Global.java в /app/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;
    }
}
1

В Java 2.0 есть образец для Play 2.0.4, в любом случае в 2.1 изменилось несколько вещей (в основном импорт)

  • 0
    спасибо мне помогло: D

Ещё вопросы

Сообщество Overcoder
Наверх
Меню