2013-10-07 2 views
2

저는 cron 트리거를 생성하고 startnow 명령을 제공하기 위해 석영 빌더를 사용하려고합니다. 트리거는 시작되지 않고 주어진 시간 간격을 완료 한 후에 시작됩니다. 누군가 날 server.i 시작하는 동안 방아쇠를 시작하는 데 도움이 일반 석영과 아무 스프링을 사용하고 있습니다. 이 SimpleTrigger를 기반으로 시간과는 달리 공급 크론 표현을 기반으로 작업을 트리거로쿼츠 트리거 빌더 시작시 트리거를 시작하지 않음

Trigger trigger = newTrigger() 
     .withIdentity(SchedulerConstants.TRIGGER_CLARITY,SchedulerConstants.QI_GROUP) 
     .withSchedule(cronSchedule("0 0/60 * * * ?").withMisfireHandlingInstructionDoNothing()) 
     .startNow() 
     .build(); 

답변

4

은 CronTrigger에 startNow()를 호출의 효과가있을 실 거예요.

cron 표현식은 Quartz가 매시간 0 분부터 60 분마다 실행되도록 지시합니다. 정확하게 0 분에 스케줄러를 시작하지 않으면 startNow 효과가 표시되지 않습니다.

희망이 있으십니까?

자세한 내용은 Quartz CronTrigger tutorials/documentation을 참조하십시오.

2

StartNow를 사용하여 작업에 두 번째 트리거를 추가 할 수 있습니다. 나는 이것이 당신이 SomeJob이라고 불리는 직업 클래스를 가지고 있다고 가정 할 때 당신을 위해 일할 것이라고 생각합니다.

var schedulerFactory = new StdSchedulerFactory(); 
    var scheduler = schedulerFactory.GetScheduler(); 
    scheduler.Start(); 

    IJobDetail job = JobBuilder.Create<SomeJob>() 
      .WithIdentity("job1", SchedulerConstants.QI_GROUP) 
      .Build();   
    Trigger trigger = newTrigger() 
      .withIdentity(SchedulerConstants.TRIGGER_CLARITY,SchedulerConstants.QI_GROUP) 
      .withSchedule(cronSchedule("0 0/60 * * * ?").withMisfireHandlingInstructionDoNothing()) 
      .build(); 
    scheduler.ScheduleJob(job, trigger); 

    IJobDetail job2 = JobBuilder.Create<SomeJob>() 
      .WithIdentity("job2", SchedulerConstants.QI_GROUP) 
      .Build();   
    Trigger trigger2 = newTrigger() 
      .withIdentity("trigger2",SchedulerConstants.QI_GROUP) 
      .StartNow() 
      .build(); 
    scheduler.ScheduleJob(job2, trigger2); 
관련 문제