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 پاسخ 322 بازدید
+1 امتیاز
1 پاسخ 322 بازدید
0 امتیاز
1 پاسخ 249 بازدید
+1 امتیاز
1 پاسخ 469 بازدید
0 امتیاز
1 پاسخ 349 بازدید
0 امتیاز
1 پاسخ 524 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط ftmh (7 امتیاز)
+1 امتیاز
1 پاسخ 274 بازدید
+1 امتیاز
1 پاسخ 294 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
...