Bonjour,

J'ai bien eu l'occasion d'étudier quartz mais je suis bloqué.
En effet, nous cherchons à limiter le nombre de thread par type de job (Par classe implementant Job) mais cela parait très difficile :

1er Test

Utiliser le JobListener du job en question:


Dans la méthode jobToBeExecuted(JobExecutionContext jobContext), vérifier le nombre de trigger pour ce job et si le nombre de triggers est supérieure à une constante, mettre le job en paused.

Dans la méthode jobWasExecuted(JobExecutionContext jobContext), faire une requête SQL pour recuperer les triggers du job en question en pause et activer un de ces jobs avec resumeTrigger.


Résultat


Bien beau sur le papier, cette solution ne marche pas. En effet, la gestion des états des triggers est bizarre et ne correspond pas à l'exécution d'un job.
Par exemple, l'état du trigger est à COMPLETE alors que le trigger n'a pas été executé (Je me suis mis en debug sur la méthode jobToBeExecuted).

2eme Test

Hypothése avec le TriggerListener

Dans la méthode triggerFired, vérifier le nombre de trigger pour ce job et si le nombre de triggers est supérieure à une constante, mettre le job en paused.

Dans la méthode triggerComplete, faire une requête SQL pour recuperer les triggers du job en question en pause et activer un de ces jobs avec resumeTrigger.

Résultat

Bien beau sur le papier, cette solution ne marche pas. En effet, la gestion des états des triggers est bizarre et ne correspond pas à l'exécution d'un job.
Par exemple, l'état du trigger est à COMPLETE alors que le trigger n'a pas été executé (Je me suis mis en debug sur la méthode triggerFired).

3eme Test

Essayer de comprendre le state

Je n'arrive pas à comprendre l'état d'un TRIGGER ni je n'arrive pas à gérer l'état de mon job.
Lorsque je plante mon job, il n'est pas stocké en erreur sur la base.
La question que je me pose : C'est où est stocké l'état du job.

Avant appel du job : En attente
Pendant l'appel : En cours
En cas d'erreur : erreur
En cas de succes : COMPLETE.

Quelqu'un a t-il une idée pour faire ce que j'ai décrit.

Merci par avance.

Karim.