2013-10-11 6 views
5

예를 들어, 매일 오전 12시에 "Hello World"를 인쇄하는 자바 프로그램을 작성하고 싶습니다. 이것을 달성하기 위해 석영 스케쥴러를 어떻게 사용할 수 있습니까?java quartz scheduler 특정 시간에 실행

Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0); 
trigger.setName("trigger1"); 
trigger.setGroup("group1"); 

이와 비슷한? "hello world"방식으로 인쇄해야하는 곳은 어디입니까?

답변

6

당신은 작업의 실행을 예약하는 표현을 사용할 수 있습니다. 예 :

public static class HelloJob implements Job { 
    @Override 
    public void execute(JobExecutionContext ctx) throws JobExecutionException { 
     System.out.println("Hello World"); 
    } 
} 

public static void main(String[] args) throws SchedulerException { 
    String exp = "0 0 0 1/1 * ? *"; 

    SchedulerFactory factory = new StdSchedulerFactory(); 
    Scheduler scheduler = factory.getScheduler(); 
    scheduler.start(); 
    JobDetail job = JobBuilder.newJob(HelloJob.class).build(); 
    Trigger trigger = TriggerBuilder.newTrigger() 
            .startNow() 
            .withSchedule(
             CronScheduleBuilder.cronSchedule(exp)) 
            .build(); 
    scheduler.scheduleJob(job, trigger); 
} 

다른 표현식을 작성하려면 http://www.cronmaker.com/을 참조하십시오. 예 : 0 0/1 * 1/1 * ? * 매분마다 출력물을 볼 수 있습니다. Cron Expressions을 참조하십시오.

+2

크론 식을 제공하는 것보다 더 간단, 당신이 사용할 수있는 작업 클래스 만들기 작업을

import org.apache.log4j.Logger; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class MyJob implements Job { private Logger log = Logger.getLogger(MyJob.class); @Override public void execute(JobExecutionContext context) throws JobExecutionException { log.debug("Hi...."); System.out.println("Corn Executing....."); } } 
  • 을 예약 할 수있는 클래스 (직업) [CronScheduleBuilder # dailyAtHourAndMinute (int, int)] (http://quartz-scheduler.org/api/2.0.0/org/quartz/CronScheduleBuilder.html#dailyAtHourAndMinute%28int,%20int%29) 메소드를 사용하십시오.그냥'CronScheduleBuilder.cronSchedule (exp)'를'CronScheduleBuilder.dailyAtHourAndMinute (0, 0)'로 대체하십시오. 사실, 그것은시와 분을 동등한 cron 표현으로 변환 할 것입니다. – ssssteffff

  • +0

    네 말이 맞아. 구성은 간단하지만 간단 할 것입니다. –

    +0

    내 방법을 추가하는 방법은 무엇입니까? 클래스가 아니다. – marlonpya

    0

    작업 인터페이스를 구현하고 실행 메소드 구현을 제공하여 사용자 정의 작업을 만들어야합니다. 메소드를 실행하면 "hello world"를 인쇄 할 수 있습니다. 그런 다음 단계의 세부 사항에 의해 단계에 대한 링크를 참조하십시오이

    scheduler.scheduleJob(job, trigger); 
    

    같은 작업을 예약 할 수 있습니다 Quartz tutorial

    0

    이 경우 cron 표현식을 만들 수 있습니다. 당신은 다음과 같은 개체

    1. 작업이 필요합니다 수정 작업을해야합니다
    2. 마지막으로 트리거를 생성하고 트리거

    트리거의에 작업 연결 작업에 연결됩니다

  • 작업 두 가지 유형

    작업을 제어 할 수있는 간단한 트리거는 최소 10 분마다 실행할 수 있습니다. 당신은 또한 추가 매개 변수 귀하의 경우 당신은 매일 오전 12시 실행할 때문에 당신이 크론 트리거 사용할 수 있습니다에서

    initial delay - to kick off 
    
    repeatcount - no of times the job should be executes, if -1 then job will be executed infinitely 
    

    을 가질 수 있습니다. 링크

    http://www.mkyong.com/spring/spring-quartz-scheduler-example/

    아래 석영 크론 표현에 대한이의 자세한 내용과 예제 프로그램을 찾습니다

    ,

    http://quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger

  • 1
    1. 다운로드 석영 항아리에 넣어 석영 설명서를 참조하십시오 lib 폴더 빌드 프로젝트
    2. 만들기 당신이 일정

      import org.quartz.JobBuilder; 
      import org.quartz.JobDetail; 
      import org.quartz.Scheduler; 
      import org.quartz.SchedulerException; 
      import org.quartz.SchedulerFactory; 
      import org.quartz.SimpleScheduleBuilder; 
      import org.quartz.Trigger; 
      import org.quartz.TriggerBuilder; 
      import org.quartz.impl.StdSchedulerFactory; 
      
      public class JobScheduler { 
      
          public static void main(String[] args) { 
           // TODO Auto-generated method stub 
           try { 
            JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("myjob").build(); 
      
            Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(30).repeatForever()).build(); 
      
            SchedulerFactory schFactory = new StdSchedulerFactory(); 
            Scheduler scheduler = schFactory.getScheduler(); 
            scheduler.start(); 
            scheduler.scheduleJob(job, trigger); 
      
           }catch (SchedulerException e) { 
      
            e.printStackTrace(); 
           } 
          } 
      } 
      
    관련 문제