나는 간단한 작업이 있습니다. 서버가 다운 된 경우에도 2 개월마다 첫날에 프로세스를 실행해야합니다. 작업이 매우 쉽습니다. 작업은 매우 쉽습니다.서버가 다운 된 경우에도 매 2 개월마다 프로세스를 스케줄하는 가장 좋은 방법은
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
CronTrigger trigger = new CronTrigger("0 0 1 1 */2 ?");
scheduler.schedule(new Runnable() {
@Override
public void run() {
// do the job
job();
}
}, trigger);
그러나 서버가 다운되어 한 달 전에 직장을 운영한다면 어떻게 될까요? 이 경우 다음 달 초에 내 직무를 수행하고 싶습니다. 나는이 일을 마지막으로 실행될 때 나는 데이터베이스에 저장하기로 결정 내 서버가 시작될 때
private void job() {
// Store when the job was executed the last time
}
지금, 나는 다시 한 번 트리거를 시작할 필요가 있지만 즉시. 트리거를 시작할 때 쉽게 계산할 수 있지만 불행히도 ThreadPoolTaskScheduler
에서 적절한 함수를 찾을 수 없습니다. 이 주기적으로 시작 시간에 작업을 실행 할 수 있습니다 기능입니다 : public ScheduledFuture scheduleAtFixedRate(Runnable task, Date startTime, long period)
불행하게도, ThreadPoolTaskScheduler이 public ScheduledFuture schedule(Runnable task, Date startTime, Trigger trigger)
내가 추가 scheduler.execute를 사용하여 기능을 구현 지원하지 않습니다,하지만 문제는 가능은 하나를 사용하여 수행하는 경우 시간표.
Java 기반 솔루션 대신 [crontab] (http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/)을 사용해보십시오. – ericson