Quartz - это мощная и продвинутая структура планировщика, помогающая разработчику Java планировать работу, выполняемую в определенные дату и время.
Из этого туториала Вы узнаете, как разработать задание планировщика с использованием Quartz 1.6.3.
1. Скачать Quartz
Вы можете получить библиотеку Quartz на сайте official или в центральном репозитории Maven.
Файл: pom.xml
<dependencies> <!-- Quartz API --> <dependency> <groupId>opensymphony</groupId> <artifactId>quartz</artifactId> <version>1.6.3</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.directory.studio</groupId> <artifactId>org.apache.commons.logging</artifactId> <version>1.1.1</version> </dependency> </dependencies>
2. Кварц Иов
Кварцевая работа определяется тем, что вы хотите запустить?
Файл: HelloJob
package com.mkyong.common; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class HelloJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Hello Quartz!"); } }
3. Кварцевый триггер
Кварцевый триггер определяется, когда Кварц будет работать над вашей работой выше кварца?
Есть два типа Кварцевых триггеров:
-
SimpleTrigger - позволяет установить время начала, время окончания, интервал повторения.
-
CronTrigger - Позволяет выражению Unix cron указывать даты и
раз запустить свою работу.
Выражение cron в Unix Выражение cron в Unix очень гибкое и мощное, вы можете узнать и увидеть множество примеров выражений cron на следующих сайтах.
SimpleTrigger - запускать каждые 30 секунд.
SimpleTrigger trigger = new SimpleTrigger(); trigger.setName("dummyTriggerName"); trigger.setStartTime(new Date(System.currentTimeMillis() + 1000)); trigger.setRepeatCount(SimpleTrigger.REPEAT__INDEFINITELY); trigger.setRepeatInterval(30000);
CronTrigger - запускать каждые 30 секунд.
CronTrigger trigger = new CronTrigger(); trigger.setName("dummyTriggerName"); trigger.setCronExpression("0/30 ** ** ** ** ?");
4. Планировщик
Класс планировщика связывает вместе « Job » и « Trigger » и выполняет его.
Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger);
5. Полный пример
Вот два полных примера использования Quartz через SimpleTrigger и CronTrigger.
-
Пример SimpleTrigger ** + Выполнить очень 30 секунд с задержкой в 1 секунду в первый раз выполнения.
package com.mkyong.common; import java.util.Date; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SimpleTrigger; import org.quartz.impl.StdSchedulerFactory; public class SimpleTriggerExample { public static void main( String[]args ) throws Exception { JobDetail job = new JobDetail(); job.setName("dummyJobName"); job.setJobClass(HelloJob.class); //configure the scheduler time SimpleTrigger trigger = new SimpleTrigger(); trigger.setStartTime(new Date(System.currentTimeMillis() + 1000)); trigger.setRepeatCount(SimpleTrigger.REPEAT__INDEFINITELY); trigger.setRepeatInterval(30000); //schedule it Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger); } }
-
Пример CronTrigger ** То же самое, запускать задание каждые 30 секунд.
package com.mkyong.common; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.impl.StdSchedulerFactory; public class CronTriggerExample { public static void main( String[]args ) throws Exception { JobDetail job = new JobDetail(); job.setName("dummyJobName"); job.setJobClass(HelloJob.class); CronTrigger trigger = new CronTrigger(); trigger.setName("dummyTriggerName"); trigger.setCronExpression("0/30 ** ** ** ** ?"); //schedule it Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger); } }
Скачать исходный код
Загрузите его - ссылка://wp-content/uploads/2010/04/QuartzExample.zip[QuartzExample.zip](14 КБ)
Рекомендации
ссылка://тег/java/[java]ссылка://тег/кварц/[кварц]ссылка://тег/планировщик/[планировщик]