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 پاسخ 497 بازدید
+1 امتیاز
1 پاسخ 581 بازدید
0 امتیاز
1 پاسخ 428 بازدید
+1 امتیاز
1 پاسخ 715 بازدید
0 امتیاز
1 پاسخ 522 بازدید
0 امتیاز
1 پاسخ 698 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط ftmh (7 امتیاز)
+1 امتیاز
1 پاسخ 605 بازدید
+1 امتیاز
1 پاسخ 439 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
...