이 문서는 Java에서 Jira Scheduler를 구현하는 방법을 공유하기 위해 작성되었다.
도구명 | jira, java |
---|---|
버전 | 8.22 |
Scheduler register, unregister
onStart, onStop Override
@ExportAsService @Named public class ScheduleSync implements LifecycleAware { @ComponentImport private final SchedulerService schedulerService; private final JobId ISSUE_SYNC_JOB_ID = JobId.of("issue-sync-job-id"); @Override public void onStart() { issueSyncService.doLogin(); JobConfig jobConfig = JobConfig.forJobRunnerKey(ScheduleJob.ISSUE_SYNC_JOBRUNNER_KEY) .withSchedule(Schedule.forCronExpression((String) getDbInfo1().get("cron"))) .withRunMode(RunMode.RUN_LOCALLY); schedulerService.scheduleJob(ISSUE_SYNC_JOB_ID, jobConfig); } @Override public void onStop() { schedulerService.unscheduleJob(ISSUE_SYNC_JOB_ID); } }
- LifecycleAware의 plugin onStart, onStop 메소드 구현
- onStart : plugin이 시작될 때 scheduleService api - Jira scheduler register (do Job)
- onStop : plugin이 종료되면 scheduleService api - Jira scheduler unregister (stop Job)
scheduleService 응용
public void controlJob() throws SchedulerServiceException { if(getDbInfo1().get("scheduleJob").equals("on")){ doJob(); }else if(getDbInfo1().get("scheduleJob").equals("off") || getDbInfo1().get("scheduleJob") == null){ stopJob(); } }
- 서버 DB에 Scheduler정보를 저장, 임의적으로 register, unregister handling
- plugin이 작동되는 동안 scheduler on/off 가능 (servlet - templateRenderer로 vm, js 형식으로 UI 기능 구현)
JobId, JobRunnerKey 등록
public class ScheduleJob implements JobRunner { public static final JobRunnerKey ISSUE_SYNC_JOBRUNNER_KEY = JobRunnerKey.of(ScheduleJob.class.getCanonicalName()); } public class ScheduleSync implements LifecycleAware { private final JobId ISSUE_SYNC_JOB_ID = JobId.of("issue-sync-job-id"); JobConfig jobConfig = JobConfig.forJobRunnerKey(ScheduleJob.ISSUE_SYNC_JOBRUNNER_KEY) .withSchedule(Schedule.forCronExpression((String) getDbInfo1().get("cron"))) .withRunMode(RunMode.RUN_LOCALLY); schedulerService.scheduleJob(ISSUE_SYNC_JOB_ID, jobConfig); }
- ScheduleJob, ScheduleSync class에 각 저장한 JobRunnerKey, JobId를 파라미터로 Schedule Job Run
Jira Scheduler 동작 확인
Jira Scheduler menu
- DB에 CRON 표현식과 Scheduler register 여부 저장
- 시스템 - 스케쥴러 상세정보 - 설정한 scheduler key 검색
- 추가한 Scheduler의 Key와 다음 실행될 일정에 대한 정보