Quartz — это система планирования заданий с открытым исходным кодом. Его можно использовать для управления и планирования заданий в приложении.
ШАГ 1: СОЗДАТЬ MAVEN ПРОЕКТ
Maven проект создается как показано ниже. (Его можно создать с помощью Maven или IDE Plug-in).
ШАГ 2: БИБЛИОТЕКИ
Кварцевые зависимости добавляются в pom.xml Maven. Эти библиотеки зависимостей будут загружены Центральным репозиторием Maven.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <modelVersion>4.0.0</modelVersion> <groupId>OTV_Quartz</groupId> <artifactId>OTV_Quartz</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- Quartz library --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.0.2</version> </dependency> <!-- Log4j library --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> </dependencies></project> |
ШАГ 3: СОЗДАТЬ НОВУЮ РАБОТУ
Новое задание создается путем реализации интерфейса Quartz Job, как показано ниже. Класс TestJob определяет бизнес-логику, которая будет запланирована.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
package com.otv.job;import org.apache.log4j.Logger;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class TestJob implements Job { private Logger log = Logger.getLogger(TestJob.class); public void execute(JobExecutionContext jExeCtx) throws JobExecutionException { log.debug("TestJob run successfully..."); }} |
ШАГ 4: СВЯЗЬ РАБОТЫ С ОБЪЕКТОМ JOBDETAIL
Созданный класс TestJob связан с объектом JobDetail.
|
1
2
3
|
JobDetail job = JobBuilder.newJob(TestJob.class) .withIdentity("testJob") .build(); |
ШАГ 5: СОЗДАЙТЕ НОВОГО ТРИГГЕРА
Новый триггер создается, как показано ниже. Класс триггера определяет период выполнения задания, которое будет запланировано. Есть два вида Кварцевых Триггеров как:
Триггер : указывает время начала, время окончания, период выполнения задания.
CronTrigger : указывает время начала, время окончания, период выполнения задания в соответствии с выражением cron Unix.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
//Trigger the job to run on the next round minuteTrigger trigger = TriggerBuilder.newTrigger() .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(30) .repeatForever()) .build();// CronTrigger the job to run on the every 20 secondsCronTrigger cronTrigger = TriggerBuilder.newTrigger() .withIdentity("crontrigger","crontriggergroup1") .withSchedule(CronScheduleBuilder.cronSchedule("10 * * * * ?")) .build(); |
ШАГ 6: СОЗДАНИЕ SchedulerFactory
Создается новый SchedulerFactory, и объект Scheduler получается из класса SchedulerFactory.
|
1
2
|
SchedulerFactory schFactory = new StdSchedulerFactory();Scheduler sch = schFactory.getScheduler(); |
ШАГ 7: ЗАПУСК планировщика
Объект планировщика запущен.
|
1
2
|
// Start the schedulesch.start(); |
ШАГ 8: РАСПИСАНИЕ РАБОТЫ
TestJob запланирован:
|
1
2
|
// Tell quartz to schedule the job using the triggersch.scheduleJob(job, trigger); |
ШАГ 9: ПОЛНЫЙ ПРИМЕР
TestJob будет выполняться два раза в минуту.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
package com.otv;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SchedulerFactory;import org.quartz.SimpleScheduleBuilder;import org.quartz.Trigger;import org.quartz.TriggerBuilder;import org.quartz.impl.StdSchedulerFactory;import com.otv.job.TestJob;/*** @author onlinetechvision.com* @since 17 Sept 2011* @version 1.0.0**/public class JobScheduler { public static void main(String[] args) { try { // specify the job' s details.. JobDetail job = JobBuilder.newJob(TestJob.class) .withIdentity("testJob") .build(); // specify the running period of the job Trigger trigger = TriggerBuilder.newTrigger() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(30) .repeatForever()) .build(); //schedule the job SchedulerFactory schFactory = new StdSchedulerFactory(); Scheduler sch = schFactory.getScheduler(); sch.start(); sch.scheduleJob(job, trigger); } catch (SchedulerException e) { e.printStackTrace(); } }} |
ШАГ 10: ВЫХОД
Когда класс JobScheduler запущен, вывод будет выглядеть так:
|
1
2
3
4
|
17.09.2011 23:39:37 DEBUG (TestJob.java:13) - TestJob run successfully...17.09.2011 23:40:07 DEBUG (TestJob.java:13) - TestJob run successfully...17.09.2011 23:40:37 DEBUG (TestJob.java:13) - TestJob run successfully...17.09.2011 23:41:07 DEBUG (TestJob.java:13) - TestJob run successfully... |
ШАГ 11: СКАЧАТЬ
Ссылка: Quartz 2 Scheduler от нашего партнера JCG Эрен Авсарогуллари в блоге Online Technology Vision .
