Planificador de tareas Java: Quartz Scheduler — guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Planificador de tareas Java: Quartz Scheduler



En el desarrollo moderno con Java, a menudo surge la necesidad de ejecutar ciertas acciones según un horario: envío de correos electrónicos masivos, archivado de registros, sincronización de datos o generación de informes. Para resolver estas tareas, existe una biblioteca potente y flexible llamada Quartz Scheduler. Es un framework de código abierto que permite crear, programar y gestionar tareas (Jobs) utilizando disparadores (Triggers) y expresiones cron. Quartz se integra fácilmente con Spring Boot, Java EE y cualquier aplicación independiente.



Características principales de Quartz

  • Programación flexible — soporte para intervalos simples (cada N segundos/minutos) y expresiones cron complejas.
  • Persistencia — almacenamiento del estado de las tareas en una base de datos (JDBC JobStore) para recuperación tras reinicios de la aplicación.
  • Agrupación en clúster — distribución de tareas entre varios nodos para tolerancia a fallos.
  • Ejecución paralela — posibilidad de ejecutar múltiples tareas simultáneamente.
  • Ejecuciones omitidas — configuración del comportamiento en caso de inactividad (instrucciones misfire).


Instalación y configuración

Para usar Quartz, agregue la dependencia en pom.xml (Maven):

<dependency>    <groupId>org.quartz-scheduler</groupId>    <artifactId>quartz</artifactId>    <version>2.3.2</version></dependency>


Para Gradle:

implementation 'org.quartz-scheduler:quartz:2.3.2'


Creación de una tarea simple

Cada tarea en Quartz es una clase que implementa la interfaz Job. Dentro del método execute() se escribe la lógica de negocio.

import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;

public class HelloJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("¡Hola! Tarea ejecutada a las " + new java.util.Date()); }}


Configuración del planificador y del disparador

El planificador (Scheduler) se crea a través de la fábrica StdSchedulerFactory. Luego se crea un disparador: simple (SimpleTrigger) o basado en cron (CronTrigger).

import org.quartz.*;import org.quartz.impl.StdSchedulerFactory;

public class QuartzExample { public static void main(String[] args) throws SchedulerException { // 1. Obtenemos el planificador Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

// 2. Definimos la tarea JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity("myJob", "group1") .build();

// 3. Creamos el disparador — ejecución cada 10 segundos Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10) .repeatForever()) .build();

// 4. Vinculamos la tarea al disparador e iniciamos el planificador scheduler.scheduleJob(job, trigger); scheduler.start(); }}


Uso de expresiones cron

Las expresiones cron permiten definir horarios complejos. Formato: segundos minutos horas día-del-mes mes día-de-la-semana.

// Ejecución cada día a las 18:30CronScheduleBuilder cronSchedule = CronScheduleBuilder        .dailyAtHourAndMinute(18, 30);

// O manualmente: "0 30 18 * * ?" (cada día a las 18:30)Trigger cronTrigger = TriggerBuilder.newTrigger() .withIdentity("cronTrigger", "group1") .withSchedule(CronScheduleBuilder.cronSchedu

Recommendations