Quartz Job Scheduling Framework[翻译]附录 A. Quartz 配置参考 (第四部分)

八. 配置 JobStoreTX JobStore

你可以像下面那样设定类名来选择 JobStoreTX 类:

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

表 A.4 列出了配置 Quartz JobStore 的可用属性。只有少数几个属性是必须的,而且其他的都有合理的默认值。

表 A.4. 配置 Quartz JobStore 可用的属性
名称 必须 类型 默认值
org.quartz.jobStore.driverDelegateClass String null
org.quartz.jobStore.dataSource String null
org.quartz.jobStore.tablePrefix String QRTZ_
org.quartz.jobStore.useProperties Boolean false
org.quartz.jobStore.misfireThreshold Integer 60000
org.quartz.jobStore.isClustered Boolean false
org.quartz.jobStore.clusterCheckinInterval Long 15000
org.quartz.jobStore.maxMisfiresToHandleAtATime Integer 20
org.quartz.jobStore.dontSetAutoCommitFalse Boolean false
org.quartz.jobStore.selectWithLockSQL String "SELECT * FROM {0} LOCKS WHERE LOCK_NAME = ? FOR UPDATE"
org.quartz.jobStore.txIsolationLevelSerializable Boolean false


·org.quartz.jobStore.driverDelegateClass

Quartz 通过一个代理可以使用大部分流行的数据库平台。这里是 org.quartz.jobStore.driverDelegateClass 属性允许的值:

    ·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

这个属性的值必须是本附录接下来的 DataSource 配置中定义的 DataSource 的名称。

·org.quartz.jobStore.tablePrefix

表前缀属性是作为在你的数据库中创建 Quartz 表的表名的前缀。如果你使用不同的表前缀,你就能够在同一个数据库中拥有多套 Quartz 表。

·org.quartz.jobStore.useProperties

"使用属性" 设置指示着 JDBC JobStore 所有在 JobDataMap 中的值会是字符串,因此,它们可以名-值对来存储,而无需把更复杂的对象以序列化的形式存储在 BLOB 列中。这样做很有好处的,因为避免了伴随着序列化非字符串类到 BLOB 时产生的类版本问题。

·org.quartz.jobStore.misfireThreshold

设定这个属性为一个毫秒数,Scheduler 允许一个 Triiger 在超过它的下次触发时多少毫秒才算是错过触发。默认值是 60000 (60 秒)。

·org.quartz.jobStore.isClustered

设置为 true 来打开集群特性。假如你正使用多个 Quartz 实例且用的是同一套数据库表的话,这个属性必须设置为 true

·org.quartz.jobStore.clusterCheckinInterval

设置当前实例检查集群中的其他实例的频度 (毫秒)。这个值会影响侦测失败实例的灵敏性。

·org.quartz.jobStore.maxMisfiresToHandleAtATime

这是设定 JobStore 同一时刻能处理错过触发 Trigger 的最大数量。一次同时处理太多(超过数十个)的话,会导致数据库表被锁定过长的时间,从而影响到了触发其他的(还未错过触发) Trigger 的性能。

·org.quartz.jobStore.dontSetAutoCommitFalse

设置这一参数为 true 是告诉 Quartz 别调用从 DataSource 处获取的连接的 setAutoCommit(false) 方法。这在一些情况下是有帮助的,比如可能你有某个驱动在连接关闭的时候是不允许调用该方法的。这个属性默认为 false,因为多数驱动是需要调用 setAutoCommit(false) 方法的。

·org.quartz.jobStore.selectWithLockSQL

这必须为一个 SQL 字符串,用来从 LOCKS 表中查询一条记录并在其中加锁。倘若未予设置,默认为 SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ? FOR UPDATE, 这可在多数数据库中正常工作。{0} 会在运行时替代为你早先配置的 TABLE_PREFIX 属性。

·org.quartz.jobStore.txIsolationLevelSerializable

值为 true 是告诉 Quartz (当使用 JobStoreTX 或是 CMT 的时候) 去调用 JDBC 连接的 setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE) 方法。这对于避免某些数据库在高负载及长事物发生时的锁超时是有帮助的。

本文链接 https://yanbin.blog/quartz-job-scheduling-framework-appendix-4/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments