Tuesday, January 19, 2010

Configuring the JobStoreTX JobStore










Configuring the JobStoreTX JobStore


You can select the JobStoreTX class by setting the class name like this:


org.quartz.jobStore.class =
org.quartz.impl.jdbcjobstore.JobStoreTX


Table A.4 lists the available properties for configuring a Quartz JobStore. Only a few of the properties are required, and the rest have reasonable defaults.



Table A.4. The Properties for Configuring the Quartz JobStore

Name

Required

Type

Default Value

org.quartz.jobStore.driverDelegateClass

Yes

String

null

org.quartz.jobStore.dataSource

Yes

String

null

org.quartz.jobStore.tablePrefix

No

String

QRTZ_

org.quartz.jobStore.useProperties

No

Boolean

false

org.quartz.jobStore.misfireThreshold

No

Integer

60000

org.quartz.jobStore.isClustered

No

Boolean

false

org.quartz.jobStore.clusterCheckinInterval

No

Long

15000

org.quartz.jobStore.maxMisfiresToHandleAtATime

No

Integer

20

org.quartz.jobStore.dontSetAutoCommitFalse

No

Boolean

false

org.quartz.jobStore.selectWithLockSQL

No

String

"SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ? FOR UPDATE"

org.quartz.jobStore.txIsolationLevelSerializable

No

Boolean

false




org.quartz.jobStore.driverDelegateClass


Quartz can use most of the popular database platforms by using a delegate. These are the allowed values for the org.quartz.jobStore.driverDelegateClass property:


  • org.quartz.impl.jdbcjobstore.StdJDBCDelegate

  • org.quartz.impl.jdbcjobstore.MSSQLDelegate

  • org.quartz.impl.jdbcjobstore.PostgreSQLDelegate

  • org.quartz.impl.jdbcjobstore.WebLogicDelegate (for WebLogic drivers)

  • org.quartz.impl.jdbcjobstore.oracle.OracleDelegate

  • org.quartz.impl.jdbcjobstore.oracle.WebLogicOracleDelegate

  • org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate

  • org.quartz.impl.jdbcjobstore.CloudscapeDelegate

  • org.quartz.impl.jdbcjobstore.DB2v6Delegate

  • org.quartz.impl.jdbcjobstore.DB2v7Delegate

  • org.quartz.impl.jdbcjobstore.HSQLDBDelegate

  • org.quartz.impl.jdbcjobstore.PointbaseDelegate





org.quartz.jobStore.dataSource


The value for this property must be the name of one the DataSources defined in the DataSource configuration section later in this appendix.




org.quartz.jobStore.tablePrefix


The table prefix property is a string equal to the prefix given to Quartz's tables that were created in your database. You can have multiple sets of Quartz tables within the same database if they use different table prefixes.




org.quartz.jobStore.useProperties


The "use properties" setting instructs the JDBC JobStore that all values in JobDataMaps will be Strings and, therefore, can be stored as name-value pairs instead of storing more complex objects in their serialized form in the BLOB column. This can be helpful because you avoid the class-versioning issues that can arise from serializing your non-String classes into a BLOB.




org.quartz.jobStore.misfireThreshold


Set this property to the number of milliseconds the Scheduler will tolerate a trigger to pass its next-fire time before it is considered misfired. The default value is 60000 (60 seconds).




org.quartz.jobStore.isClustered


Set this to true to turn on clustering features. This property must be set to TRue if you are using multiple instances of Quartz and the same set of database tables.




org.quartz.jobStore.clusterCheckinInterval


Set the frequency (in milliseconds) at which this instance checks in with the other instances of the cluster. This value affects the quickness of detecting failed instances.





org.quartz.jobStore.maxMisfiresToHandleAtATime


This is the maximum number of misfired triggers the JobStore will handle in a given pass. Handling many (more than a couple dozen) at once can cause the database tables to be locked long enough to hamper the performance of firing other (not yet misfired) triggers.




org.quartz.jobStore.dontSetAutoCommitFalse


Setting this parameter to TRue tells Quartz not to call setAutoCommit(false) on connections obtained from the DataSource(s). This can be helpful in a few situations, such as if you have a driver that complains if it is called when it is already off. This property defaults to false because most drivers require setAutoCommit(false) to be called.




org.quartz.jobStore.selectWithLockSQL


This must be a SQL string that selects a row in the LOCKS table and places a lock on the row. If it is not set, the default is SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ? FOR UPDATE, which works for most databases. The {0} is replaced during runtime with the TABLE_PREFIX that you configured earlier.




org.quartz.jobStore.txIsolationLevelSerializable


A value of TRue tells Quartz (when using JobStoreTX or CMT) to call setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE) on JDBC connections. This can be helpful to prevent lock timeouts with some databases under high load and long-lasting transactions.













No comments: