Quartz Scheduler para Java: guia completo com exemplos práticos
1. O que é e para que serve
O Quartz Scheduler é uma biblioteca poderosa e de nível industrial para agendamento de tarefas (job scheduling) em aplicações Java. Ela oferece aos desenvolvedores um mecanismo flexível e confiável para executar código Java arbitrário em horários específicos ou conforme uma programação definida. O Quartz pode ser integrado tanto em utilitários de console simples quanto em sistemas corporativos complexos, rodando em servidores de aplicação (Tomcat, JBoss, WebLogic) e em aplicações Spring.
Para que serve? Em qualquer aplicação séria, mais cedo ou mais tarde surge a necessidade de executar operações em segundo plano: envio de campanhas de e-mail, geração de relatórios, sincronização de dados com sistemas externos, limpeza de arquivos temporários, verificação de status de pedidos. Implementar esses mecanismos manualmente com java.util.Timer ou ScheduledExecutorService torna-se complexo e pouco confiável à medida que os requisitos crescem: é preciso gerenciar tarefas perdidas, clusterização, persistência de agendamentos e expressões cron complexas. O Quartz resolve todos esses problemas "de fábrica".
Principais recursos do Quartz: suporte a triggers complexos (cron, intervalos simples, calendários), persistência de tarefas e triggers em banco de dados (JDBC JobStore), clusterização para alta disponibilidade, listeners para monitoramento de execução, suporte a transações e a capacidade de adicionar, remover e modificar tarefas dinamicamente sem parar o scheduler. É por essas qualidades que o Quartz é o padrão de facto para agendamento no ecossistema Java.
2. Instalação
O Quartz Scheduler é distribuído via Maven Central. Para adicioná-lo ao seu projeto, use o sistema de build Maven ou Gradle.
Maven
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<!-- Para usar JDBC JobStore (opcional) -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.2</version>
</dependency>
Gradle
implementation 'org.quartz-scheduler:quartz:2.3.2'
implementation 'org.quartz-scheduler:quartz-jobs:2.3.2'
Se você usa Spring Boot, basta adicionar o starter spring-boot-starter-quartz, que já inclui o Quartz e o configura automaticamente.
3. Início rápido — exemplo mínimo funcional
Vamos criar uma aplicação simples que exibe "Olá, Quartz!" a cada 5 segundos.
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzQuickStart {
// 1. Criamos o Job — a classe que executará o trabalho
public static class HelloJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Olá, Quartz! Hora: " + System.currentTimeMillis());
}
}
public static void main(String[] args) throws Exception {
// 2. Obtemos o scheduler da fábrica
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 3. Iniciamos o scheduler
scheduler.start();
// 4. Definimos o JobDetail — a descrição da tarefa
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("myJob", "group1")
.build();
// 5. Criamos o trigger — agendamento: a cada 5 segundos, indefinidamente
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(" Também na biblioteca
httpmock para Go: guia completo com exemplos práticos
GraphQL para Swift: Apollo iOS — cliente para iOS e macOS
Contêineres de Injeção de Dependência em Rust: visão geral e implementação com o exemplo «dicy»
ORM para Rust: comparação e exemplos de uso de Diesel, SeaORM e SQLx