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



No desenvolvimento moderno em Java, surge frequentemente a necessidade de executar determinadas ações em um cronograma: envio de newsletters por e-mail, arquivamento de logs, sincronização de dados ou geração de relatórios. Para resolver essas tarefas, existe uma biblioteca poderosa e flexível chamada Quartz Scheduler. Este é um framework open-source que permite criar, agendar e gerenciar tarefas (Jobs) usando triggers e expressões cron. O Quartz integra-se facilmente com Spring Boot, Java EE e qualquer aplicação standalone.



Principais recursos do Quartz

  • Agendamento flexível — suporte para intervalos simples (a cada N segundos/minutos) e expressões cron complexas.
  • Persistência — armazenamento do estado das tarefas em um banco de dados (JDBC JobStore) para recuperação após reinicialização da aplicação.
  • Clusterização — distribuição de tarefas entre vários nós para alta disponibilidade.
  • Execução paralela — possibilidade de executar várias tarefas simultaneamente.
  • Execuções perdidas — configuração de comportamento em caso de inatividade (misfire instructions).


Instalação e configuração

Para usar o Quartz, 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'


Criando uma tarefa simples

Cada tarefa no Quartz é uma classe que implementa a interface Job. Dentro do método execute(), escreve-se a lógica de negócio.

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("Olá! Tarefa executada em " + new java.util.Date()); }}


Configurando o agendador e o trigger

O agendador (Scheduler) é criado através da fábrica StdSchedulerFactory. Em seguida, cria-se um trigger — simples (SimpleTrigger) ou baseado em cron (CronTrigger).

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

public class QuartzExample { public static void main(String[] args) throws SchedulerException { // 1. Obtém o agendador Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

// 2. Define a tarefa JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity("myJob", "group1") .build();

// 3. Cria o trigger — execução a cada 10 segundos Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10) .repeatForever()) .build();

// 4. Vincula a tarefa ao trigger e inicia o agendador scheduler.scheduleJob(job, trigger); scheduler.start(); }}


Usando expressões cron

Expressões cron permitem definir cronogramas complexos. Formato: segundos minutos horas dia-do-mês mês dia-da-semana.

// Execução todos os dias às 18:30CronScheduleBuilder cronSchedule = CronScheduleBuilder        .dailyAtHourAndMinute(18, 30);

// Ou manualmente: "0 30 18 * * ?" (todos os dias às 18:30)Trigger cronTrigger = TriggerBuilder.newTrigger() .withIdentity("cronTrigger", "group1") .withSchedule(CronScheduleBuilder.cronSchedu

Recommendations