Введение
В этом проекте вы научитесь использовать фреймворк Quartz для планирования и выполнения простой задачи, которая напоминает пользователю встать, чистить зубы и洗脸。
🎯 Задачи
В этом проекте вы научитесь:
- Как реализовать интерфейс
Jobв классеRemindJobдля определения задачи, которая должна быть выполнена - Как реализовать класс
RemindSchedulerдля планирования и выполненияRemindJobс использованием планировщика Quartz - Как написать тестовую функцию для проверки функциональности планирования класса
RemindScheduler
🏆 Достижения
После завершения этого проекта вы сможете:
- Использовать фреймворк Quartz для планирования и выполнения задач
- Создавать и настраивать экземпляры
JobDetailиTriggerдля задачи - Запускать и останавливать планировщик Quartz
- Писать тестовые функции для проверки функциональности вашего приложения
Реализуйте класс RemindJob
В этом шаге вы научитесь реализовать класс RemindJob, который реализует интерфейс Job из фреймворка Quartz.
Откройте файл
RemindJob.java, расположенный в директории/home/labex/project/QuartzRemind/src/main/java/org/labex.Реализуйте метод
execute()интерфейсаorg.quartz.Job. Этот метод будет вызываться планировщиком Quartz при выполнении задачи.
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Wake up! Brush your teeth and wash your face!");
System.out.println("Current system time - " + new Date());
}
Метод execute() должен выводить сообщение напоминания "Wake up! Brush your teeth and wash your face!" и текущее системное время.
Реализуйте класс RemindScheduler
В этом шаге вы научитесь реализовать класс RemindScheduler, который планирует и выполняет RemindJob.
Откройте файл
RemindScheduler.java, расположенный в директории/home/labex/project/QuartzRemind/src/main/java/org/labex.Реализуйте метод
getJobDetail(), который создает и возвращает экземплярorg.quartz.JobDetailдляRemindJob.
public static JobDetail getJobDetail() {
return JobBuilder.newJob(RemindJob.class)
.withIdentity("reminderJob", "reminderGroup")
.build();
}
- Реализуйте метод
getTrigger(), который создает и возвращает экземплярorg.quartz.TriggerдляRemindJob. Триггер будет повторять задачу каждые 2 секунды, 3 раза.
public static Trigger getTrigger() {
return TriggerBuilder.newTrigger()
.withIdentity("reminderTrigger", "reminderGroup")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2)
.withRepeatCount(2))
.build();
}
- Реализуйте метод
doScheduler(), который планирует и выполняетRemindJobс использованием экземпляраorg.quartz.Scheduler.
public void doScheduler() throws SchedulerException, InterruptedException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// Запустите планировщик
scheduler.start();
System.out.println("Планирование запущено");
// Планируйте задачу с определенным JobDetail и Trigger
scheduler.scheduleJob(getJobDetail(), getTrigger());
// Подождите 10 секунд
Thread.sleep(10000);
// Остановите планировщик
scheduler.shutdown();
System.out.println("Планирование завершено");
}
Этот метод запускает планировщик, планирует задачу с экземплярами JobDetail и Trigger, ждет 10 секунд, а затем останавливает планировщик.
Напишите тестовую функцию
В этом шаге вы научитесь писать тестовую функцию для проверки функциональности планирования класса RemindScheduler.
Откройте файл
TestQuartz.java, расположенный в директории/home/labex/project/QuartzRemind/src/test/java/org/labex.Реализуйте метод
test(), который создает экземплярRemindSchedulerи вызывает его методdoScheduler().
@Test
public void test() {
try {
new RemindScheduler().doScheduler();
} catch (InterruptedException | SchedulerException e) {
e.printStackTrace();
}
}
Этот тестовый метод выполнит функциональность планирования и проверит, что задача выполняется как ожидается.
Запустите тест
Для запуска теста и проверки проекта следуйте этим шагам:
Откройте терминал и перейдите в директорию
/home/labex/project/QuartzRemind.Запустите следующую команду для выполнения теста:
mvn test
Вы должны увидеть следующий вывод:
Scheduling started
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:03 CST 2024
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:05 CST 2024
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:07 CST 2024
Scheduling completed
Этот вывод показывает, что RemindJob был выполнен три раза, как запланировано классом RemindScheduler.
Поздравляем! Вы успешно завершили проект, реализовав классы RemindJob и RemindScheduler и написав тестовую функцию для проверки функциональности планирования.
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



