Beispiel zum Ausführen mehrerer Jobs in Quartz

Beispiel zum Ausführen mehrerer Jobs in Quartz

In diesem Beispiel zeigen wir Ihnen, wie Sie mehrere Quarzjobs über Quarz-APIs, Quarz-XML und Spring deklarieren. Im Quartz Scheduler-Framework wird jeder Job an einen eindeutigen Trigger angehängt und vom Scheduler ausgeführt.

P.S In Quartz, one trigger for multiple jobs is not possible. (Korrigieren Sie mich, wenn dies falsch ist.)

1. Quarz-APIs

Erstellen Sie die Jobs von 3 Quartz, JobA, JobB und JobC.

package com.example.quartz;

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

public class JobA implements Job {

    @Override
    public void execute(JobExecutionContext context)
        throws JobExecutionException {
        System.out.println("Job A is runing");
    }

}
package com.example.quartz;

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

public class JobB implements Job {

    @Override
    public void execute(JobExecutionContext context)
        throws JobExecutionException {
        System.out.println("Job B is runing");
    }

}
package com.example.quartz;

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

public class JobC implements Job {

    @Override
    public void execute(JobExecutionContext context)
        throws JobExecutionException {
        System.out.println("Job C is runing");
    }

}

Verwenden Sie Quarz-APIs, um mehr als 3 Jobs zu deklarieren, die 3 bestimmten Triggern zugewiesen sind, und planen Sie sie.

package com.example.quartz;

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

public class CronTriggerExample {
    public static void main( String[] args ) throws Exception
    {

    JobKey jobKeyA = new JobKey("jobA", "group1");
        JobDetail jobA = JobBuilder.newJob(JobA.class)
        .withIdentity(jobKeyA).build();

        JobKey jobKeyB = new JobKey("jobB", "group1");
        JobDetail jobB = JobBuilder.newJob(JobB.class)
        .withIdentity(jobKeyB).build();

        JobKey jobKeyC = new JobKey("jobC", "group1");
        JobDetail jobC = JobBuilder.newJob(JobC.class)
        .withIdentity(jobKeyC).build();


        Trigger trigger1 = TriggerBuilder
        .newTrigger()
        .withIdentity("dummyTriggerName1", "group1")
        .withSchedule(
            CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
        .build();

        Trigger trigger2 = TriggerBuilder
        .newTrigger()
        .withIdentity("dummyTriggerName2", "group1")
        .withSchedule(
            CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
        .build();

        Trigger trigger3 = TriggerBuilder
        .newTrigger()
        .withIdentity("dummyTriggerName3", "group1")
        .withSchedule(
            CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
        .build();

        Scheduler scheduler = new StdSchedulerFactory().getScheduler();

        scheduler.start();
        scheduler.scheduleJob(jobA, trigger1);
        scheduler.scheduleJob(jobB, trigger2);
        scheduler.scheduleJob(jobC, trigger3);

    }
}

Ausgabe

Job A is runing //every 5 seconds
Job B is runing
Job C is runing
Job A is runing //every 5 seconds
Job B is runing
Job C is runing

2. Quarz-XML-Beispiel

Die entsprechende Version in der XML-Datei. Stellen Sie sicher, dass sich "quartz.properties" und "quartz-config.xml" im Projektklassenpfad befinden.

Datei - quartz.properties

org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz-config.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true

Datei - quartz-config.xml



    
        
            JobA
            GroupDummy
            This is Job A
            com.example.quartz.JobA
        

        
            
                dummyTriggerNameA
                JobA
                GroupDummy
                
                0/5 * * * * ?
            
        
    

    
        
            JobB
            GroupDummy
            This is Job B
            com.example.quartz.JobB
        

        
            
                dummyTriggerNameB
                JobB
                GroupDummy
                
                0/5 * * * * ?
            
        
    

Datei: web.xml



    
       org.quartz.ee.servlet.QuartzInitializerListener
   

3. Frühlingsbeispiel

Die entsprechende Version im Frühjahr.

package com.example.job;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class JobA extends QuartzJobBean {

    @Override
    protected void executeInternal(JobExecutionContext arg0)
        throws JobExecutionException {
        System.out.println("Job A is runing");
    }

}
package com.example.job;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class JobB extends QuartzJobBean {

    @Override
    protected void executeInternal(JobExecutionContext arg0)
        throws JobExecutionException {
        System.out.println("Job B is runing");

    }

}
package com.example.job;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class JobC extends QuartzJobBean {

    @Override
    protected void executeInternal(JobExecutionContext arg0)
        throws JobExecutionException {
        System.out.println("Job C is runing");

    }

}

File : Spring-Quartz.xml - Deklariert Jobs und Trigger in der Spring XML Bean-Konfigurationsdatei.



    
    
    

    
    
        
    

    
        
    

    
        
    

    
    
        
        
    

    
        
        
    

    
        
        
    

    
        
            
                
                
                
            
        
    

Starte es

package com.example.common;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) throws Exception {
        new ClassPathXmlApplicationContext("Spring-Quartz.xml");

    }
}

Ausgabe.

INFO: Starting beans in phase 2147483647
Jul 30, 2012 10:38:13 PM org.springframework.scheduling.quartz.SchedulerFactoryBean startScheduler
INFO: Starting Quartz Scheduler now
Job A is runing
Job B is runing
Job C is runing
Job A is runing
Job B is runing
Job C is runing

Quellcode herunterladen

Laden Sie es herunter -Multiple-Jobs-in-Quartz-Spring-Example.zip (25kb)