Arquivo

Posts Tagged ‘cron’

Adding a scheduled task to Cron at Linux

Lets suppose that you have to run some task (a script for example) called test.sh every day at 6 and 12. You can use Linux Cron to schedule it.

Enter the command crontab -e to edit your cron schedule, then, add the lines:
00 6 * * * //test.sh
00 12 * * * //test.sh

Then, just save the file and voilà!

Cron its very flexible, you can configure minutes, seconds, days, months and years, and create complex schedules!

Enjoy!

Criando uma tarefa Agendada no Java com Quartz

Eventualmente temos a necessidade de ter um aplicativo Java que irá rodar seguindo uma determinada agenda, por exemplo, de 10 em 10 minutos, todos dia as 18 horas, etc…

Quartz é um componente que nos permite fazer isso com facilidade. Para criar uma aplicação simples, basta baixar o mesmo de quartz-scheduler.org , e criar uma aplicação com as libs do quartz no classpath da mesma, e ter pelo menos duas classes, uma que representa a TAREFA, e outra que representa a AGENDA. Seguem os exemplos:

– Tarefa

package com.br.infoserver.quartz;

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

/**
 * Esta classe demonstra uma tarefa que ira ser invocada pelo Quartz
 * Tem que implementar a interface Job do Quartz
 * @author julianom
 *
 */
public class TarefaExemplo implements Job{

/**
 * Metodo que é executado quando a tarefa é invocada
 */
 public void execute(JobExecutionContext context)
 throws JobExecutionException {
 // Obviamente, aqui vai a lógica da tarefa a ser chamada, nesta caso, vai imprimir no console
   SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy – hh:mm:ss");
   System.out.println("Rodou: " + dateFormat.format( new Date() ));
 }

}

– Agenda

package com.br.infoserver.quartz;

import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

/**
 * Esta é a classe que deve ser invocada e irá disparar a tarefa nos momentos
 * determinados
 *
 * @author julianom
 *
 */
public class Agendador {

	public static void inicia() throws Exception {
		// Detalhes da tarefa
		JobDetail job = JobBuilder.newJob(TarefaExemplo.class).withIdentity(
				"tarefaAloMundo", "group1").build();
		// Gatilho - ou seja, quando irá chamar, neste caso, a cada 5 segundos
		Trigger trigger = TriggerBuilder.newTrigger().withIdentity(
				"gatilhoAloMundo", "group1").withSchedule(
				CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();

		// Agenda e voa lá!
		Scheduler scheduler = new StdSchedulerFactory().getScheduler();
		scheduler.start();
		scheduler.scheduleJob(job, trigger);

	}

}

Finalmente, a classe principal que invoca a agenda:

package com.br.infoserver.quartz;
/**
 * Classe principal da aplicação que dispara as agendas
 * @author julianom
 *
 */
public class IniciaAgenda {

	public static void main(String[] args) {
		try {
			Agendador.inicia();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

Enjoy!

Categorias:JAVA Tags:, , , ,