Agendador de Tarefas Java: Quartz Scheduler — Guia Completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Agendador de Tarefas Java: Quartz Scheduler — uma ferramenta poderosa para automação



No desenvolvimento moderno em Java, surge frequentemente a necessidade de executar determinadas ações em horários agendados: envio de relatórios, limpeza de cache, sincronização de dados ou execução de processos em segundo plano. O java.util.Timer e o ScheduledExecutorService integrados são adequados para cenários simples, mas para sistemas corporativos complexos, é necessária uma solução mais flexível e confiável. Essa solução é o Quartz Scheduler — uma biblioteca poderosa e de código aberto para agendamento de tarefas em Java.



O que é o Quartz Scheduler?



Quartz é uma biblioteca de código aberto que permite criar, agendar e executar tarefas (Jobs) com alta precisão. Ela suporta:

  • Triggers flexíveis baseados em expressões cron e intervalos simples.
  • Armazenamento persistente de tarefas em bancos de dados (JDBC).
  • Clusterização para alta disponibilidade.
  • Execução paralela e gerenciamento de threads.
  • Escuta de eventos (Listeners) para monitoramento.


O Quartz é amplamente utilizado no Spring Framework (através do módulo spring-boot-starter-quartz) e em aplicações enterprise.



Instalação e configuração



Para começar, adicione a dependência no 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'


Componentes principais do Quartz



Para entender como o agendador funciona, vamos analisar seus elementos-chave:

  • Job — interface que sua tarefa implementa. Contém o método execute(JobExecutionContext context).
  • JobDetail — descrição da tarefa (nome, grupo, dados).
  • Trigger — regra de execução (horário, intervalo, cron).
  • Scheduler — componente principal que gerencia todas as tarefas.


Exemplo: agendador simples com expressão cron



Vamos criar uma tarefa que exibe uma mensagem a cada 10 segundos.



Passo 1. Implementar o Job

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

public class SimpleJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Tarefa executada! Hora: " + System.currentTimeMillis()); }}


Passo 2. Configurar o Scheduler e executar

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

public class QuartzExample { public static void main(String[] args) throws SchedulerException { // 1. Criar a fábrica e obter o agendador Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); scheduler.start();

// 2. Criar o JobDetail JobDetail job = JobBuilder.newJob(SimpleJob.class) .withIdentity("myJob", "group1") .build();

// 3. Criar o Trigger com expressão cron (a cada 10 segundos) Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?")) .build();

// 4. Agendar a tarefa scheduler.scheduleJob(job, trigger);

// 5. Aguardar 30 segundos para demonstração try { Thread.sleep(30000); } catch (InterruptedException e) { e.printStackTrace(); }

// 6. Parar o agendador schedule

Recommendations