Agendador de Tarefas Quartz

Agendador de Tarefas Quartz

Agendador de Tarefas Quartz

Olá Amigos,

Hoje faremos um agendador de Tarefas Quartz Framework. Um agendador de tarefas é um processo que será executado em uma determinada data e horário específico. Esse momento de execução pode ser cíclico, ou seja, há uma repetição (diária, semanal, mensal, anual) ou em intervalos menores como (segundos, minutos ou horas).
Utilizaremos a versão 2.2.
timer-icon

Para iniciar faça o download dos arquivos no site oficial. Esses são os arquivos necessário que você deve adicionar no class path da aplicação.

 c3p0-0.9.1.1.jar
 log4j-1.2.16.jar
 quartz-2.2.1.jar
 quartz-jobs-2.2.1.jar
 slf4j-api-1.6.6.jar
 slf4j-log4j12-1.6.6.jar

No código abaixo criaremos a classe que conterá a regra de negócio que vai ser agendada para execução.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package br.com.feltex.quartz;
 
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
 
public class AtualizaCadastroJOB implements Job {
 
 
     //Aqui fica o código que será executado pelo agendamento.
     // Caso ocorra um erro de execução uma exceção será lançada. 
	public void execute(JobExecutionContext context)
			throws JobExecutionException {
		System.out.println("Cadastro atualizado com sucesso!");		
	}
}

Em seguida criaremos a classe que dispara o JOB. Fiz comentário em cada linha para que fique bem claro o que está sendo feito.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package br.com.feltex.quartz;
 
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
 
// Classe que dispara o JOB
public class AgendaTrigger {
 
	public static void main(String[] args) {
 
		try {
			// Registrando a classe que execurá meus métodos de negócio
			JobDetail job = JobBuilder.newJob(AtualizaCadastroJOB.class)
					.withIdentity("nomeMeuJOB", "grupoCadastro").build();
 
			// Criado um objeto de intervalo de repetição
			// No nosso caso será de 2 segundos
			SimpleScheduleBuilder intervalo = SimpleScheduleBuilder
					.simpleSchedule().withIntervalInSeconds(2).repeatForever();
 
			// Criado um disparador
			Trigger trigger = TriggerBuilder.newTrigger()
					.withIdentity("nomeDisparador", "grupoCadastro")
					.withSchedule(intervalo).build();
 
 
			// Finalmente é criado um objeto de agendamento
			// que recebe o JOB e o disparador!
			Scheduler scheduler = new StdSchedulerFactory().getScheduler();
			scheduler.start();
			scheduler.scheduleJob(job, trigger);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Pronto. Basta executar a classe “AgendaTrigger” que você verá a execução a cada 2 segundos.
Veja um exemplo de saída:

Cadastro atualizado com sucesso!
Cadastro atualizado com sucesso!
Cadastro atualizado com sucesso!
Cadastro atualizado com sucesso!
Cadastro atualizado com sucesso!

Links relacionados


Site oficial Quartz

Gostou do post? Agradeça o autor compartilhando nas redes sociais. Clique nos links abaixo:

Deixe uma resposta