Introdução
Neste projeto, você aprenderá como usar o framework Quartz para agendar e executar um trabalho simples que lembra o usuário de acordar, escovar os dentes e lavar o rosto.
🎯 Tarefas
Neste projeto, você aprenderá:
- Como implementar uma interface
Jobna classeRemindJobpara definir a tarefa que precisa ser executada - Como implementar uma classe
RemindSchedulerpara agendar e executar oRemindJobusando o Quartz Scheduler - Como escrever uma função de teste para verificar a funcionalidade de agendamento da classe
RemindScheduler
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Usar o framework Quartz para agendar e executar trabalhos
- Criar e configurar instâncias
JobDetaileTriggerpara um trabalho - Iniciar e desligar o Quartz Scheduler
- Escrever funções de teste para verificar a funcionalidade da sua aplicação
Implementar a classe RemindJob
Nesta etapa, você aprenderá como implementar a classe RemindJob que implementa a interface Job do framework Quartz.
Abra o arquivo
RemindJob.javalocalizado no diretório/home/labex/project/QuartzRemind/src/main/java/org/labex.Implemente o método
execute()da interfaceorg.quartz.Job. Este método será chamado pelo Quartz Scheduler quando o trabalho for executado.
@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());
}
O método execute() deve imprimir a mensagem de lembrete "Wake up! Brush your teeth and wash your face!" e a hora atual do sistema.
Implementar a classe RemindScheduler
Nesta etapa, você aprenderá como implementar a classe RemindScheduler que agenda e executa o RemindJob.
Abra o arquivo
RemindScheduler.javalocalizado no diretório/home/labex/project/QuartzRemind/src/main/java/org/labex.Implemente o método
getJobDetail()que cria e retorna uma instânciaorg.quartz.JobDetailpara oRemindJob.
public static JobDetail getJobDetail() {
return JobBuilder.newJob(RemindJob.class)
.withIdentity("reminderJob", "reminderGroup")
.build();
}
- Implemente o método
getTrigger()que cria e retorna uma instânciaorg.quartz.Triggerpara oRemindJob. O trigger repetirá o trabalho a cada 2 segundos, 3 vezes.
public static Trigger getTrigger() {
return TriggerBuilder.newTrigger()
.withIdentity("reminderTrigger", "reminderGroup")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2)
.withRepeatCount(2))
.build();
}
- Implemente o método
doScheduler()que agenda e executa oRemindJobusando a instânciaorg.quartz.Scheduler.
public void doScheduler() throws SchedulerException, InterruptedException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// Start the scheduler
scheduler.start();
System.out.println("Scheduling started");
// Schedule the job with the defined JobDetail and Trigger
scheduler.scheduleJob(getJobDetail(), getTrigger());
// Sleep for 10 seconds
Thread.sleep(10000);
// Shutdown the scheduler
scheduler.shutdown();
System.out.println("Scheduling completed");
}
Este método inicia o scheduler, agenda o trabalho com as instâncias JobDetail e Trigger, espera por 10 segundos e, em seguida, desliga o scheduler.
Escrever a função de teste
Nesta etapa, você aprenderá como escrever uma função de teste para verificar a funcionalidade de agendamento da classe RemindScheduler.
Abra o arquivo
TestQuartz.javalocalizado no diretório/home/labex/project/QuartzRemind/src/test/java/org/labex.Implemente o método
test()que cria uma instância deRemindSchedulere invoca seu métododoScheduler().
@Test
public void test() {
try {
new RemindScheduler().doScheduler();
} catch (InterruptedException | SchedulerException e) {
e.printStackTrace();
}
}
Este método de teste executará a funcionalidade de agendamento e verificará se o trabalho é executado conforme o esperado.
Executar o teste
Para executar o teste e verificar o projeto, siga estas etapas:
Abra um terminal e navegue até o diretório
/home/labex/project/QuartzRemind.Execute o seguinte comando para executar o teste:
mvn test
Você deve ver a seguinte saída:
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
Esta saída indica que o RemindJob foi executado três vezes, conforme agendado pela classe RemindScheduler.
Parabéns! Você concluiu com sucesso o projeto implementando as classes RemindJob e RemindScheduler e escrevendo uma função de teste para verificar a funcionalidade de agendamento.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



