web-dev-qa-db-fra.com

java quartz scheduler lance immédiatement un nouvel emploi

Est-il possible de créer un travail qui déclenchera immédiatement? Lorsque je veux que le travail soit déclenché, j’ai créé une chaîne d’expression cron avec la date et l’heure actuelles; travail immédiatement?

Merci d'avance.

27
user590586

Tous les travaux enregistrés dans Quartz Scheduler sont identifiés de manière unique par la touche JobKey qui est composée d'un nom et d'un groupe. Vous pouvez lancer le travail qui a un JobKey immédiatement en appelant triggerJob (JobKey jobKey) de votre Scheduler instance.

//Create a new Job 
JobKey jobKey = JobKey.jobKey("myNewJob", "myJobGroup");
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity(jobKey).storeDurably().build();

//Register this job to the scheduler
scheduler.addJob(job, true);

//Immediately fire the Job MyJob.class
scheduler.triggerJob(jobKey);

Remarque :

  • scheduler est l'instance du planificateur utilisée dans toute votre application. Sa méthode start () devrait déjà être appelée après sa création.

  • Le travail est le travail durable qui ne peut y attacher aucun déclencheur ou cron. Il ne peut être déclenché que par programme en appelant triggerJob (JobKey jobKey)

28
Ken Chan

Oui, utilisez la variable Trigger suivante pour lancer immédiatement votre travail au lieu d’attendre les expressions Cron.

    String jobName = ""; // Your Job Name
    String groupName = ""; // Your Job Group
    Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity(jobName, groupName)
                .startNow()
                .build();
49
Rohit Bansal

Vous pouvez créer la "JobKey" à la volée avec les 2 valeurs de chaîne de clé.

IScheduler sched = /* however you get your scheduler*/;

sched.TriggerJob(new JobKey("myname", "mygroup"));
0
granadaCoder