Spring MVC 3 Запланированное по времени задание запускается в определенное время - PullRequest
3 голосов
/ 21 декабря 2011

Я хочу запланировать запуск метода в Spring MVC через каждые два часа. Это я легко могу сделать с помощью планировщика времени Spring 3.0. Тем не менее, я хочу начать выполнение только в определенное время дня. То есть метод должен вызываться только каждые 2 часа, начиная с определенного времени.

Например, я хочу, чтобы метод запускался каждые 2 часа, начиная с 6 утра. Интерфейс TimeScheduler имеет метод scheduleAtFixedRate, который перегружен для использования аргумента startTime Date. Я не совсем уверен, как это использовать.

Есть идеи, как этого достичь?

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

Вы можете взглянуть на интерфейс TaskScheduler.Он предоставляет метод scheduleAtFixedRate(Runnable task, Date startTime, long period), который возвращает ScheduledFuture.Вы можете использовать это с простой конфигурацией Spring:

<task:scheduler id="scheduler" pool-size="10"/>

Это создаст экземпляр ThreadPoolTaskScheduler, который реализует TaskScheduler.Подключите этого плохого парня к классу, чтобы вызвать ваш конкретный метод:

public class MyClass {
    @Autowired
    private TaskScheduler scheduler;

    public void init() {
        scheduler.scheduleAtFixedRate(new Runnable() {
            public void run() {
                myMethod();
            }
        }, new Date(), 1000 * 60 * 60 * 2); //This will start now and run every two hours
    }

    public void myMethod() {
        // the method you want to invoke
    }
}
0 голосов
/ 21 декабря 2011

Я бы взглянул на поддержку Spring для Выполнение задач и планирование . В частности, обратите внимание на аннотацию @Scheduled (с помощью которой вы можете указать расписание на основе выражения cron):

@Scheduled(cron="*/5 * * * * MON-FRI")
public void doSomething() {
    // something that should execute on weekdays only
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...