Saltar al contenido

¿Cómo evitar la ejecución simultánea de un trabajo en Grails?

La guía o código que encontrarás en este post es la resolución más rápida y válida que hallamos a esta inquietud o problema.

Solución:

Suponiendo que está utilizando el complemento de cuarzo de griales, debería poder configurar el concurrent propiedad de su clase de trabajo a false.

De la documentación del complemento de cuarzo:

“De forma predeterminada, los trabajos se ejecutan de manera simultánea, por lo que la ejecución de un nuevo trabajo puede comenzar incluso si la ejecución anterior del mismo trabajo todavía se está ejecutando. Si desea anular este comportamiento, puede usar la propiedad ‘concurrente’, en este caso StatefulJob de Quartz será usó”

En versiones más recientes del complemento de cuarzo (versión 2.0.13 para Grails 3.3.*), se vería así:

class MyJob 

    static concurrent = false

    void execute() 
        println "Job run!"
    

Para versiones anteriores de griales/cuarzo, se vería similar, excepto que las propiedades se establecieron con def en vez de static:

class MyJob 

    def concurrent = false

    void execute() 
        println "Job run!"
    

Haga que su clase de trabajo implemente StatefulJob en lugar de Job

Para trabajos basados ​​en Quartz, la concurrencia se logra usando

static concurrent = false

en la clase de trabajo.

Nota la static en la definiciónesto es necesario en lugar de def concurrent = false al menos desde la versión 2.0.12. Consulte la documentación de Quartz.

Te mostramos las comentarios y valoraciones de los usuarios

Si haces scroll puedes encontrar las explicaciones de otros gestores de proyectos, tú además puedes mostrar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *