2012. április 2., hétfő

Quartz - A feladatütemező konfigurálása

Az előző cikkben a Quartz által használt fogalmakról írtam, a mostani bejegyzésemben pedig a Quartz eltérő környezetekhez való felkonfigurálásáról fogok blogolni.

A Quartz konfigurációs beállításait a classpath-ra elhelyezett quartz.properties fájlban adhatjuk meg, ami alapján a StdSchedulerFactory legyártja az időzítéshez használt Scheduler példányt. A RAMJobStore használatához elég a quartz.properties fájlt megírni, a JDBCJobStore használatához ezen felül még létre kell hozni a szükséges adatbázis táblákat is (/docs/dbTable mappa). A következőkben a quartz.properties fájl minimális konfigurációját fogom ismertetni néhány lehetséges környezethez.

RAMJobStore – Standalone környezethez

Az időzítési információkat az alkalmazás minden indulásakor inicializálni kell, továbbá a lekésett triggerekhez tartozó jobok újbóli végrehajtására nincs lehetőség.
#Configure MainScheduler
org.quartz.scheduler.instanceName = MyScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.threadPool.threadCount = 3

#Configure JobStore
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

JDBCJobStore/JobStoreTX – Standalone környezethez

A konfiguráció egy standalone java alkalmazás által használt beállításokat tartalmazza. Az ütemező adatainak perzisztens tárolásához egy MySQL adatbázis került bekonfigurálásra, melynek az attribútumait a datasource résznél property-kkel definiáltam.
#Configure Main 
Schedulerorg.quartz.scheduler.instanceName = MyTestScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.threadPool.threadCount = 3

#Configure JobStore
org.quartz.jobStore.useProperties = true
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.dataSource=myTestDS

#Configure Datasources (by properties)
org.quartz.dataSource.myTestDS.driver=com.mysql.jdbc.Driver
org.quartz.dataSource.myTestDS.URL=jdbc:mysql://localhost:3306/testQuartz
org.quartz.dataSource.myTestDS.user=testQuartz
org.quartz.dataSource.myTestDS.password=testQuartz
org.quartz.dataSource.myTestDS.maxConnections=30

JDBCJobStore/JobStoreCMT – Standalone környezethez

A konfiguráció egy Java EE alkalmazás ütemezőjének beállításait mutatja. Az ütemező adatainak a tárolásához szintén egy MySQL adatbázis lett bekonfigurálva. A működéshez két datasource-t kell beállítani, egy JTA tranzakciókban résztvevő (myTestDS) és egy nem tranzakcionális (myTestDSNonManagedTX) datasource-t. Az adatforrásokat az előző példával ellentétben most nem property-vel, hanem JNDI-al adtam meg.
#Configure Main Scheduler
org.quartz.scheduler.instanceName = MyTestScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.threadPool.threadCount = 3

#Configure JobStore
org.quartz.jobStore.useProperties = true
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreCMT
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.dataSource = myTestDS
org.quartz.jobStore.nonManagedTXDataSource = myTestDSNonManagedTX 

#Configure Datasources (by jndi)
org.quartz.dataSource.myTestDS.jndiURL=java:/dbDatasource
org.quartz.dataSource.myTestDSNonManagedTX.jndiURL=java:/dbDatasourceNonManaged

JDBCJobStore/JobStoreTX – Clustered környezethez

Klaszterezett környezetben minden node-nak ugyanazt a quartz.properties beállításokat kell használnia, csupán a ThreadPool méret és az InstanceId lehet eltérő. A node-oknak egyedi instanceId-vel kell rendelkezniük, ami az AUTO értékkel könnyen megvalósítható.
#Configure Main Scheduler
org.quartz.scheduler.instanceName = MyClusteredTestScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.threadPool.threadCount = 3

#Configure JobStore
org.quartz.jobStore.useProperties = true
org.quartz.jobStore.acquireTriggersWithinLock=true
org.quartz.jobStore.txIsolationLevelSerializable=true
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.dataSource = myTestDS

#Clustered Configuration
org.quartz.jobStore.isClustered = true 
org.quartz.jobStore.clusterCheckinInterval = 10000

#Configure Datasources (by properties)
org.quartz.dataSource.myTestDS.driver=com.mysql.jdbc.Driver
org.quartz.dataSource.myTestDS.URL=jdbc:mysql://localhost:3306/testQuartz
org.quartz.dataSource.myTestDS.user=testQuartz
org.quartz.dataSource.myTestDS.password=testQuartz
org.quartz.dataSource.myTestDS.maxConnections=30
A befejező részben egy WebSphere alatt futó webalkalmazáshoz fogok időzített feladatokat kódolni, ne hagyd ki a következő bejegyzésemet sem!

Nincsenek megjegyzések:

Megjegyzés küldése