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 پاسخ 541 بازدید
+1 امتیاز
1 پاسخ 638 بازدید
0 امتیاز
1 پاسخ 477 بازدید
+1 امتیاز
1 پاسخ 774 بازدید
0 امتیاز
1 پاسخ 568 بازدید
0 امتیاز
1 پاسخ 737 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط ftmh (7 امتیاز)
+1 امتیاز
1 پاسخ 659 بازدید
+1 امتیاز
1 پاسخ 497 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
...