Spring Quartz 2 동적 작업 의 실례 상세 설명
Quartz 에서 Simple ScheduleBuilder 류 를 사용 합 니 다.Cron ScheduleBuilder 가 아 닌 Cron ScheduleBuilder 는 Cron 표현 식 입 니 다.구체 적 으로 는 자체 바 이 두 를 바 랍 니 다.
구현 코드:
/**
*
* @param scheduleJob
* @throws Exception
*/
@Override
@SuppressWarnings("unchecked")
public void addJobSimple(ScheduleJob scheduleJob) throws Exception{
TriggerKey triggerKey = TriggerKey.triggerKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());
//
Trigger trigger = scheduler.getTrigger(triggerKey);
if (null == trigger) {
JobDetail jobDetail = JobBuilder.newJob((Class<? extends Job>) Class.forName(scheduleJob.getClazz()))
.withIdentity(scheduleJob.getJobName(), scheduleJob.getJobGroup()).build();
jobDetail.getJobDataMap().put("scheduleJob", scheduleJob);
SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule();
if(" ".equals(scheduleJob.getTimeType()) ||
"second".equalsIgnoreCase(scheduleJob.getTimeType())){
simpleScheduleBuilder.withIntervalInSeconds(scheduleJob.getTimeValue()).repeatForever();
}else if(" ".equals(scheduleJob.getTimeType()) || " ".equals(scheduleJob.getTimeType()) ||
"minute".equalsIgnoreCase(scheduleJob.getTimeType())){
simpleScheduleBuilder.withIntervalInMinutes(scheduleJob.getTimeValue()).repeatForever();
}else if(" ".equals(scheduleJob.getTimeType()) || " ".equals(scheduleJob.getTimeType()) ||
"hour".equalsIgnoreCase(scheduleJob.getTimeType())){
simpleScheduleBuilder.withIntervalInHours(scheduleJob.getTimeValue()).repeatForever();
}else if(" ".equals(scheduleJob.getTimeType()) ||
"date".equalsIgnoreCase(scheduleJob.getTimeType())){
simpleScheduleBuilder.withIntervalInHours(scheduleJob.getTimeValue()).repeatForever();
}
ScheduleBuilder<SimpleTrigger> schedBuilder = simpleScheduleBuilder.withMisfireHandlingInstructionNextWithRemainingCount();
trigger =TriggerBuilder.newTrigger().withIdentity(scheduleJob.getJobName(), scheduleJob.getJobGroup())
.withSchedule(schedBuilder).build();
trigger = TriggerBuilder.newTrigger().withIdentity(scheduleJob.getJobName(), scheduleJob.getJobGroup()).withSchedule(schedBuilder).build();
scheduler.scheduleJob(jobDetail, trigger);
log.info(CC.LOG_PREFIX + " :"+JasonUtils.Object2String(scheduleJob));
}else {
this.updateJobCron(scheduleJob);
}
}
주의해 야 할 것 은 시간 임 무 를 한 번 만 수행 할 때 코드 를 자세히 봐 야 합 니 다.예 를 들 어 위의 간단 한 시간 임 무 는 처음에 저 와 같 았 습 니 다.
simpleScheduleBuilder.withIntervalInSeconds(scheduleJob.getTimeValue());
결 과 는 한 번 만 실 행 됩 니 다.제 가 필요 한 것 은 계속 반복 해서 실행 하 는 것 입 니 다.마지막 으로 다음 과 같이 바 꾸 는 것 입 니 다.
simpleScheduleBuilder.withIntervalInSeconds(scheduleJob.getTimeValue()).repeatForever();
뒤에 하나 더 있 음 을 알 수 있다.repeat Forever()는 영원히 반복 된다 는 뜻 이다. 몇 번 을 실행 하고 실행 하지 않 으 려 면:.withRepeatCount(triggerRepeatCount)를 사용 하 십시오.다음 과 같 습 니 다.
simpleScheduleBuilder.withIntervalInHours(scheduleJob.getTimeValue()).withRepeatCount(triggerRepeatCount);
궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.