Я пытаюсь запустить небольшое приложение QuartzScheduler с помощью cron-триггера.
Я думаю, что у меня установлены свойства basi c для запуска и запуска, и я вижу вывод журнала следующим образом:
Mar 27, 2020 12:11:16 PM scheduler.QuartzScheduler start
INFO: QuartzScheduler started...
Mar 27, 2020 12:11:16 PM org.quartz.impl.StdSchedulerFactory instantiate
INFO: Using default implementation for ThreadExecutor
Mar 27, 2020 12:11:16 PM org.quartz.core.SchedulerSignalerImpl <init>
INFO: Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
Mar 27, 2020 12:11:16 PM org.quartz.core.QuartzScheduler <init>
INFO: Quartz Scheduler v.2.3.0 created.
Mar 27, 2020 12:11:16 PM org.quartz.simpl.RAMJobStore initialize
INFO: RAMJobStore initialized.
Mar 27, 2020 12:11:16 PM org.quartz.core.QuartzScheduler initialize
INFO: Scheduler meta-data: Quartz Scheduler (v2.3.0) 'QuartzScheduler' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
Mar 27, 2020 12:11:16 PM org.quartz.impl.StdSchedulerFactory instantiate
INFO: Quartz scheduler 'QuartzScheduler' initialized from an externally provided properties instance.
Mar 27, 2020 12:11:16 PM org.quartz.impl.StdSchedulerFactory instantiate
INFO: Quartz scheduler version: 2.3.0
Mar 27, 2020 12:11:16 PM org.quartz.core.QuartzScheduler start
INFO: Scheduler QuartzScheduler_$_NON_CLUSTERED started.
Из того, что я вижу в журналах, кажется, планировщик запущен, хотя я не вижу ни одного оператора журнала, который есть в классе Job, который должен запускаться. В соответствии с руководством я следую, чтобы выходные данные журнала выглядели так, как ожидалось, но я не уверен, почему я не вижу информацию журнала для текущей выполняемой работы.
Мой класс QuartzScheduler:
public class QuartzScheduler {
static Logger logger = LoggerFactory.getLogger(QuartzScheduler.class);
private static final String TRIGGER_NAME = "fileCheckerTrigger";
private static final String JOB_NAME = "fileCheckerJob";
private static final String CRON_EXPRESSION = "0 30 16-21 ? * * *";
private static final String DUM_CRON_EXP = "0 0/5 0 ? * * *";//every 5 minutes todo: remove when done testing
private Scheduler scheduler;
public void start() throws Exception {
logger.info("QuartzScheduler started...");
Properties p = new Properties();
p.put("org.quartz.threadPool.threadCount", "1");
p.put("org.quartz.jobStore.class", "org.quartz.simpl.RAMJobStore");
//Scheduler class links both “Job” and “Trigger” together and executes it.
StdSchedulerFactory factory = new StdSchedulerFactory(p);
scheduler = factory.getScheduler();
scheduleJob(buildCronSchedulerTrigger("cronGroup"), QuartzJob.class, "cronGroup");
scheduler.start();
//scheduler.shutdown();
}
private void scheduleJob(Trigger trigger, Class jobClass, String groupName) throws Exception {
JobDetail job = JobBuilder.newJob(jobClass).withIdentity(JOB_NAME, groupName).build();
scheduler.scheduleJob(job, trigger);
}
private Trigger buildCronSchedulerTrigger(String groupName) {
return TriggerBuilder
.newTrigger().withIdentity(TRIGGER_NAME, groupName)
.withSchedule(CronScheduleBuilder
.cronSchedule(DUM_CRON_EXP))
.build();
}
}
Мой класс QuartzJob:
public class QuartzJob implements Job {
Logger logger = LoggerFactory.getLogger(QuartzJob.class);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
logger.info(" File checking task initiated. ");
}
}
Мой класс приложения с main:
public class FileWatcherApp {
public static void main(String[] args) throws Exception {
QuartzScheduler scheduler = new QuartzScheduler();
scheduler.start();
}
}
Я ожидаю увидеть Инициированная задача проверки файла в журнале но не добились успеха в этом. Я использую временное выражение cron, которое должно запускать задание каждые 5 минут ...
Надеюсь, кто-нибудь увидит, что я делаю неправильно или не понимаю.