0 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

می خواهم بصورت زمانبندی شده (schedule) یک کار در Play Framework بصورت تکراری انجام شود. برای مثال هر شب یا هر شنبه یک اتفاق مشخص بیافتد.

1 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)

با استفاده از Akka scheduler و کتابخانه Joda-Time و قرار دادن آن در متد onStart کلاس Global برنامه خود می توانید این کار را انجام دهید:

انجام یک کار هر هفته شنبه ساعت 15:

        DateTime now = new DateTime();

        DateTime plannedStart = new DateTime()
                .withDayOfWeek(DateTimeConstants.SATURDAY)
                .withHourOfDay(15)
                .withMinuteOfHour(0)
                .withSecondOfMinute(0)
                .withMillisOfSecond(0);

        DateTime nextRun = (now.isAfter(plannedStart))
                ? plannedStart.plusDays(7)
                : plannedStart;

        Long nextRunInSeconds = (long) secondsBetween(now, nextRun).getSeconds();

        Akka.system().scheduler().schedule(
                Duration.create(nextRunInSeconds, TimeUnit.SECONDS),
                Duration.create(7, TimeUnit.DAYS) ,
                new Runnable() {
                    public void run() {
                        Logger.info("-------------------------scheduler start : " + new DateTime());
                    }
                },
                Akka.system().dispatcher()
        );

و یا انجام یک کار در نیمه شب هر شب:

        DateTime now = new DateTime();

        DateTime plannedStart = new DateTime()
                .withTimeAtStartOfDay();

        DateTime nextRun = (now.isAfter(plannedStart))
                ? plannedStart.plusDays(1)
                : plannedStart;

        Long nextRunInSeconds = (long) secondsBetween(now, nextRun).getSeconds();

        Akka.system().scheduler().schedule(
                Duration.create(nextRunInSeconds, TimeUnit.SECONDS),
                Duration.create(1, TimeUnit.DAYS) ,
                new Runnable() {
                    public void run() {
                        Logger.info("-------------------------scheduler start : " + new DateTime());
                    }
                },
                Akka.system().dispatcher()
        );

سوالات مشابه

+1 امتیاز
1 پاسخ 484 بازدید
+1 امتیاز
1 پاسخ 554 بازدید
0 امتیاز
1 پاسخ 408 بازدید
+1 امتیاز
1 پاسخ 698 بازدید
0 امتیاز
1 پاسخ 505 بازدید
0 امتیاز
1 پاسخ 681 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط ftmh (7 امتیاز)
+1 امتیاز
1 پاسخ 578 بازدید
+1 امتیاز
1 پاسخ 419 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
...