Örnek

Quartz Job'larının XML ile Tanımlanması

Quartz API'si job'ları XML ile tanımlamanızı sağlayabilirsiniz. XML üzerinde yapılan değişiklik otomatik olarak tekrar yüklenmektir.
quartz.properties aşağıdaki gibi tanımlanabilir:
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 = D:\quartz-config.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false
org.quartz.plugin.jobInitializer.scanInterval = 10
XML ile iki tane job tanımlayalım. XML dosyası D:\quartz-config.xml klasöründe olsun
<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data
	xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData
	http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
	version="1.8">
             
	<schedule>
		<job>
			<name>JobA</name>
			<group>GroupDummy</group>
			<description>This is Job A</description>
			<job-class>com.thy.mercury.jobs.HelloJob</job-class>
		</job>
		<trigger>
		  <cron>
			 <name>dummyTriggerNameA</name>
			 <job-name>JobA</job-name>
			 <job-group>GroupDummy</job-group>
			 <cron-expression>0/5 * * * * ?</cron-expression>
		  </cron>
		</trigger>
	</schedule>
	<schedule>
		<job>
		  <name>JobB</name>
		  <group>GroupDummy</group>
		  <description>This is Job B</description>
		  <job-class>com.thy.mercury.jobs.HelloJob2</job-class>
		</job>
		<trigger>
			<cron>
				<name>dummyTriggerNameB</name>
				<job-name>JobB</job-name>
				<job-group>GroupDummy</job-group>
				<cron-expression>0/5 * * * * ?</cron-expression>
			</cron>
		</trigger>
</schedule>
HelloWorld job'ları aşağıdakine benzer olabilir:
 
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
 
public class HelloJob implements Job {
 
	@Override
	public void execute(JobExecutionContext arg0) throws JobExecutionException {
			   
	  System.out.println("Hello Job");
			   
	}
 
}
Scheduler sistemini ayağa kaldırmak için uygulama aşağıdaki gibi olabilir:
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
 
public class JobsApplication {
             
	public static void main(String[] args) {
		try {
			Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
			scheduler.start();
		} catch (SchedulerException e) {
			e.printStackTrace();
		}
	}
}
Job'a aşağıdaki gibi parametre de ekleyebilirsiniz:
<job>
	<name>JobA</name>
	<group>GroupDummy</group>
	<description>This is Job A</description>
	<job-class>com.thy.mercury.jobs.HelloJob</job-class>
	<job-data-map>
		<entry>
			<key>Name</key>
			<value>World</value>
		</entry>
	</job-data-map>
</job>
Bu parametreler Job'ın içinde aşağıdaki gibi alınabilir:
System.out.println("Hello Job");
 
JobDataMap map=jobExecutionContext.getJobDetail().getJobDataMap();
 
for (String key : map.keySet()) {
             
	System.out.println(key+"="+map.getString(key));
             
}
XML'de yapılan değişiklikler 10 sn sonra devreye alınmaktadır. Eğer Job'ları kaldırmak istiyorsanız XML'in başına aşağıdakini ekleyebilirsiniz :
<pre-processing-commands>
<delete-job>
	<name>JobA</name>
	<group>GroupDummy</group>
</delete-job>
<delete-trigger>
	<name>dummyTriggerNameA</name>
</delete-trigger>
</pre-processing-commands>
zafer.teker , 09.02.2017

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir