Как реализовать запланированные задания, основанные на времени, такие как запуск в 12:00 в Play Framework 2.6? - PullRequest
0 голосов
/ 29 ноября 2018

Описание будет длинным и подробным, пожалуйста, имейте это в виду.

Я хочу сделать запланированное задание в моем приложении play-framework 2.6, которое выполняется в определенное время каждый день, скажем, например, в 12:00.

Как человек, который не работал в akka, я покопался и нашел несколько решений.

Очевидно, akka не дает функциональности для планирования такой работы,мы можем назначить таймерные задания, используя akka, то есть запускать их каждые 6 часов или что-то в этом роде.

Я обнаружил, что есть планировщик akka quartz , но я не смогнайдите любой пример / реализацию этого с play framework 2.6.

Я также прочитал этот , но по какой-то причине он дал ошибки.

Наконец я решил изменитьмое решение и использовать метод на основе таймера, описанный в Play!Документация ScheduledTasks .
Я создал новый пакет в своем приложении play 2.6 и добавил в него классы MyActorClass и CodeBlockTask, как описано в ссылке.

Затем я изменил кодчтобы показать какое-то сообщение, чтобы я знал, что оно работает или нет

actorSystem.scheduler.schedule(initialDelay = 10.seconds, interval = 1.minute) {
    // the block of code that will be executed
    Logger.info("Executing something...")
    println("Executing something...")
  }

Я запустил приложение через sbt run и Выполнение чего-либо ... не отображалось на консоли,Вот мои вопросы по этому поводу:

1. Не запускается ли задание после каждой минуты само по себе?
2. Если нет, то как правильновызвать это?

Вопрос относительно всей ситуации:
3. Что я могу сделать, если я хочу применить решение на основе времени?
PS: Требуется решение в Scala.

1 Ответ

0 голосов
/ 04 декабря 2018

Я запустил приложение через sbt run, и Выполнение чего-либо ... не отображалось на консоли.Вот мои вопросы по этому поводу:

  1. Не запускается ли задание после каждой минуты само по себе?
  2. Если нет, как правильно запустить его?

Расписание, которое вы использовали здесь:

actorSystem.scheduler.schedule(initialDelay = 10.seconds, interval = 1.minute) {
    // the block of code that will be executed
    Logger.info("Executing something...")
    println("Executing something...")
}

Здесь вы добавляете начальную задержку 10 seconds, что означает, что ваш актер будет назначен через 10 секунд после запуска вашего приложения наинтервал 1 minute.

Что я могу сделать, если я хочу применить решение на основе времени?

Вы можете найти решение на основе времени для планирования Akka actor здесь .

...