Secciones

Como crear un proceso quartz en grails

Hay veces que necesitamos ejecutar cierto funcionalidades cada cierto tiempo, por ejemplo, sincronizar ciertos datos de usuario, verificar si se ha producido alguna acción en otros sistemas, comprobar si un sistema ha dejado de responder,etc..

Quartz es un framework java para crear procesos planificados open source muy sencillo y potente. En grails tenemos la posibilidad de utilizar en formato de plugins.

Para poder utilizar quartz, lo primero que tenemos que hacer es instalar el plugin:
grails install-plugin quartz2
Una vez instalado personalizamos el fichero Config.groovy agregando los imports de quartz2:
import static org.quartz.JobBuilder.*
import static org.quartz.SimpleScheduleBuilder.*
import static org.quartz.CronScheduleBuilder.*
import static org.quartz.CalendarIntervalScheduleBuilder.*
import static org.quartz.TriggerBuilder.*
import static org.quartz.DateBuilder.*
import org.quartz.*
Después, creamos la clase para el job HelloWorldJob.groovy que implementará la lógica que queremos ejecutar:

package net.juancarlosfernandez.samples

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

class HelloWorldJob implements Job {

    @Override
    public void execute(JobExecutionContext arg0) throws JobExecutionException{
        println "Hello World!"
    }
}
Agregamos el import de esta clase al fichero Config.groovy
import net.juancarlosfernandez.samples.HelloWorldJob


Ahora sólo nos falta agregar en el mismo fichero Config.groovy la configuración que necesitamos aplicar al Job:

grails.plugin.quartz2.jobSetup.job1 = { quartzScheduler, ctx ->
JobDetail job = newJob(SignatureJob.class)
            .withIdentity("signatureServiceJob")
            .usingJobData(new JobDataMap([jobDetailName:'mainConfig']) )
            .build()
Trigger trigger = newTrigger()
            .withIdentity("signatureServiceTrigger")
            .withSchedule(simpleSchedule()
                .withIntervalInSeconds(60)
                .repeatForever())
            .startNow()
            .build()

 // Tell quartz to schedule the job using our trigger
 quartzScheduler.scheduleJob(job, trigger);
Y con esto ya tenemos nuestro servicio quartz listo para ejecutarse.

Links de referencia:

https://github.com/9ci/grails-quartz2

Saludos,

JK

No hay comentarios:

Publicar un comentario