Primeiro Programa com o Framework Quartz

JavaBeginner
Pratique Agora

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 Job na classe RemindJob para definir a tarefa que precisa ser executada
  • Como implementar uma classe RemindScheduler para agendar e executar o RemindJob usando 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 JobDetail e Trigger para 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.

  1. Abra o arquivo RemindJob.java localizado no diretório /home/labex/project/QuartzRemind/src/main/java/org/labex.

  2. Implemente o método execute() da interface org.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.

✨ Verificar Solução e Praticar

Implementar a classe RemindScheduler

Nesta etapa, você aprenderá como implementar a classe RemindScheduler que agenda e executa o RemindJob.

  1. Abra o arquivo RemindScheduler.java localizado no diretório /home/labex/project/QuartzRemind/src/main/java/org/labex.

  2. Implemente o método getJobDetail() que cria e retorna uma instância org.quartz.JobDetail para o RemindJob.

public static JobDetail getJobDetail() {
    return JobBuilder.newJob(RemindJob.class)
            .withIdentity("reminderJob", "reminderGroup")
            .build();
}
  1. Implemente o método getTrigger() que cria e retorna uma instância org.quartz.Trigger para o RemindJob. 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();
}
  1. Implemente o método doScheduler() que agenda e executa o RemindJob usando a instância org.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.

✨ Verificar Solução e Praticar

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.

  1. Abra o arquivo TestQuartz.java localizado no diretório /home/labex/project/QuartzRemind/src/test/java/org/labex.

  2. Implemente o método test() que cria uma instância de RemindScheduler e invoca seu método doScheduler().

@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.

✨ Verificar Solução e Praticar

Executar o teste

Para executar o teste e verificar o projeto, siga estas etapas:

  1. Abra um terminal e navegue até o diretório /home/labex/project/QuartzRemind.

  2. 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.

✨ Verificar Solução e Praticar

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.