Quartz Parte2

No primeiro post, deu um pequeno exemplo de temporizador que roda em tempos em tempos, digo segundos em segundos. Mas se eu quero agendar que o meu sistema lança um job, em um determinado hora de cada dia do mês? É possível?

Sim, não muda quase nada, o que precisamos é do CronTrigger, e dos parametros de que controla do time. Seja abaixo os parametros que VOCÊ deve saber:

Expressão Significado
“0 0 12 * * ?” Dispara do meio dia de cada dia
“0 15 10 ? * *” Dispara 10:15 da manhã de cada dia
“0 15 10 * * ?” Dispara 10:15 da manhã de cada dia
“0 15 10 * * ? *” Dispara 10:15 da manhã de cada dia
“0 15 10 * * ? 2005” Dispara 10:15 da manhã de cada dia durante ano de 2005
“0 * 14 * * ?” Dispara a cada minuto a partir das 02:00 e terminando às 2:59 pm, todos os dias
“0 0/5 14 * * ?” Dispara a cada 5 minuto a partir das 02:00 e terminando às 2:55 pm, todos os dias
“0 0/5 14,18 * * ?” Dispara a cada 5 minutos a partir de duas horas e terminando às 2:55 pm, e disparar a cada 5 minutos a partir de 18:00 e terminando às 6:55 pm, todos os dias
“0 0-5 14 * * ?” Dispara a cada minuto a partir das 02:00 e terminando às 2:05 pm, todos os dias
“0 10,44 14 ? 3 WED” Dispara em 2:10 da tarde até 02:44 da tarde,isso toda quarta-feira no mês de março
“0 15 10 ? * MON-FRI” Dispara às 10:15 de toda segunda-feira, terça, quarta, quinta e sexta-feira
“0 15 10 15 * ?” Dispara às 10:15 horas do dia 15 de cada mês
“0 15 10 L * ?” Dispara às 10:15 no último dia de cada mês
“0 15 10 ? * 6L” Dispara às 10:15 na última sexta-feira de cada mês
“0 15 10 ? * 6L 2002-2005” Dispara às 10:15 em cada última sexta-feira de cada mês durante os anos 2002, 2003, 2004 e 2005
“0 15 10 ? * 6#3” às 10:15 na terceira sexta-feira de cada mês

Neste post não irei tratar como instalar o framework Quartz,isso pode ser visto no post anterior.O códigos abaixo é referente a parte1, aproveitando a idéia do serviço, mas mostrando um jeito diferente de disparo do serviço.


package br.com.chikasawa.teste;

import org.apache.commons.mail.SimpleEmail;

public class EnviarEmail {

	public static void main(String[] args)
	{
		SimpleEmail email = new SimpleEmail();

		try {
			email.setDebug(true);
			email.setHostName("smtp.gmail.com");
			email.setAuthentication("seu_login", "sua_senha");
			email.setSSL(true);
			email.addTo("email_destinatario@gmail.com");
			email.setFrom("seu_email@gmail.com");
			email.setSubject("Testando");
			email.send();

		} catch (Exception e) {
			// TODO: handle exception
			System.out.println(e.getMessage());
		}

	}

}

Essa Classe, cria-se um Job.

package br.com.chikasawa.teste;

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

public class EmailJob implements Job {

	public EmailJob() {

	}

	@Override
	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		// TODO Auto-generated method stub
		EnviarEmail teste = new EnviarEmail();
		teste.main(null);

	}

}

Criei um job que despara todos os dias 31 de cada mês no horário 9:32 da manhã.

package br.com.chikasawa.teste;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.JobBuilder.*;
import static org.quartz.CronScheduleBuilder.*;

public class ExecTarefa {

	public static void main(String[] args) throws SchedulerException
	{
		JobDetail job = newJob(EmailJob.class)
			    .withIdentity("myJob", "myGroup")
			    .storeDurably()
			    .requestRecovery()
			    .usingJobData("someKey", "someValue")
			    .build();

		CronTrigger trigger = newTrigger()
			    .withIdentity("trigger1", "group1")
			    .withSchedule(cronSchedule("0 32 9 31 * ?"))
			    .build();

		Scheduler sched = new StdSchedulerFactory().getScheduler();
		 // Tell quartz to schedule the job using our trigger
		  sched.scheduleJob(job, trigger);

		  sched.start();

	}

}

Procurei mostra neste post, um forma diferente em agendar suas tarefas, serviços.

Mais informações, nada melhor que o site do framework.

Deixe um comentário

Blog no WordPress.com.

Acima ↑