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.
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
Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.