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 پاسخ 512 بازدید
+1 امتیاز
1 پاسخ 598 بازدید
0 امتیاز
1 پاسخ 443 بازدید
+1 امتیاز
1 پاسخ 739 بازدید
0 امتیاز
1 پاسخ 537 بازدید
0 امتیاز
1 پاسخ 710 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط ftmh (7 امتیاز)
+1 امتیاز
1 پاسخ 626 بازدید
+1 امتیاز
1 پاسخ 462 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
...