Primer programa con el framework Quartz

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderás a utilizar el marco Quartz para programar y ejecutar un trabajo simple que recuerde al usuario que se levante, se cepille los dientes y se lave la cara.

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo implementar la interfaz Job en la clase RemindJob para definir la tarea que necesita ser ejecutada
  • Cómo implementar la clase RemindScheduler para programar y ejecutar el RemindJob utilizando el programador Quartz
  • Cómo escribir una función de prueba para verificar la funcionalidad de programación de la clase RemindScheduler

🏆 Logros

Después de completar este proyecto, podrás:

  • Utilizar el marco Quartz para programar y ejecutar trabajos
  • Crear y configurar instancias de JobDetail y Trigger para un trabajo
  • Iniciar y detener el programador Quartz
  • Escribir funciones de prueba para verificar la funcionalidad de tu aplicación

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ConcurrentandNetworkProgrammingGroup(["Concurrent and Network Programming"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/output("Output") java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/date("Date") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/oop("OOP") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/interface("Interface") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/ConcurrentandNetworkProgrammingGroup -.-> java/threads("Threads") subgraph Lab Skills java/output -.-> lab-300366{{"Primer programa con el framework Quartz"}} java/method_overloading -.-> lab-300366{{"Primer programa con el framework Quartz"}} java/classes_objects -.-> lab-300366{{"Primer programa con el framework Quartz"}} java/date -.-> lab-300366{{"Primer programa con el framework Quartz"}} java/oop -.-> lab-300366{{"Primer programa con el framework Quartz"}} java/interface -.-> lab-300366{{"Primer programa con el framework Quartz"}} java/exceptions -.-> lab-300366{{"Primer programa con el framework Quartz"}} java/threads -.-> lab-300366{{"Primer programa con el framework Quartz"}} end

Implementar la clase RemindJob

En este paso, aprenderás a implementar la clase RemindJob que implementa la interfaz Job del marco Quartz.

  1. Abra el archivo RemindJob.java ubicado en el directorio /home/labex/project/QuartzRemind/src/main/java/org/labex.

  2. Implemente el método execute() de la interfaz org.quartz.Job. Este método será llamado por el programador Quartz cuando se ejecute el trabajo.

@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());
}

El método execute() debe imprimir el mensaje de recordatorio "Wake up! Brush your teeth and wash your face!" y la hora actual del sistema.

✨ Revisar Solución y Practicar

Implementar la clase RemindScheduler

En este paso, aprenderás a implementar la clase RemindScheduler que programa y ejecuta el RemindJob.

  1. Abra el archivo RemindScheduler.java ubicado en el directorio /home/labex/project/QuartzRemind/src/main/java/org/labex.

  2. Implemente el método getJobDetail() que crea y devuelve una instancia de org.quartz.JobDetail para el RemindJob.

public static JobDetail getJobDetail() {
    return JobBuilder.newJob(RemindJob.class)
         .withIdentity("reminderJob", "reminderGroup")
         .build();
}
  1. Implemente el método getTrigger() que crea y devuelve una instancia de org.quartz.Trigger para el RemindJob. El disparador repetirá el trabajo cada 2 segundos, 3 veces.
public static Trigger getTrigger() {
    return TriggerBuilder.newTrigger()
         .withIdentity("reminderTrigger", "reminderGroup")
         .startNow()
         .withSchedule(SimpleScheduleBuilder.simpleSchedule()
               .withIntervalInSeconds(2)
               .withRepeatCount(2))
         .build();
}
  1. Implemente el método doScheduler() que programa y ejecuta el RemindJob utilizando la instancia de org.quartz.Scheduler.
public void doScheduler() throws SchedulerException, InterruptedException {
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

    // Iniciar el programador
    scheduler.start();

    System.out.println("Programación iniciada");

    // Programar el trabajo con el JobDetail y Trigger definidos
    scheduler.scheduleJob(getJobDetail(), getTrigger());

    // Dormir durante 10 segundos
    Thread.sleep(10000);

    // Detener el programador
    scheduler.shutdown();

    System.out.println("Programación completada");
}

Este método inicia el programador, programa el trabajo con las instancias de JobDetail y Trigger, espera 10 segundos y luego detiene el programador.

✨ Revisar Solución y Practicar

Escribir la función de prueba

En este paso, aprenderás a escribir una función de prueba para verificar la funcionalidad de programación de la clase RemindScheduler.

  1. Abra el archivo TestQuartz.java ubicado en el directorio /home/labex/project/QuartzRemind/src/test/java/org/labex.

  2. Implemente el método test() que crea una instancia de RemindScheduler e invoca su método doScheduler().

@Test
public void test() {
    try {
        new RemindScheduler().doScheduler();
    } catch (InterruptedException | SchedulerException e) {
        e.printStackTrace();
    }
}

Este método de prueba ejecutará la funcionalidad de programación y verificará que el trabajo se ejecute como se espera.

✨ Revisar Solución y Practicar

Ejecutar la prueba

Para ejecutar la prueba y verificar el proyecto, siga estos pasos:

  1. Abra una terminal y navegue hasta el directorio /home/labex/project/QuartzRemind.

  2. Ejecute el siguiente comando para ejecutar la prueba:

mvn test

Debería ver la siguiente salida:

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 salida indica que el RemindJob se ejecutó tres veces, según lo programado por la clase RemindScheduler.

¡Felicitaciones! Has completado con éxito el proyecto al implementar las clases RemindJob y RemindScheduler, y escribir una función de prueba para verificar la funcionalidad de programación.

✨ Revisar Solución y Practicar

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.