二. 配置 Quartz ThreadPool
表 A.2 列出了配置 Quartz ThreadPool 可用的属性。只有少些属性是必须的,剩下的都有合理的默认值。
名称 | 必须 | 类型 | 默认值 | |
org.quartz.threadPool.class | 是 | String | null | |
org.quartz.threadPool.threadCount | 是 | Integer | -1 | |
org.quartz.threadPool.threadPriority | 否 | Integer | 5 | |
org.quartz.threadPool.makeThreadsDaemons | 否 | boolean | false | |
org.quartz.threadPool.threadsInheritGroup- OfInitializingThread |
否 | boolean | true | |
org.quartz.threadPool.threadsInheritContext- ClassLoaderOfInitializingThread |
否 | boolean | false |
·org.quartz.threadPool.class
用于指定你想要使用的 ThreadPool 实现的类名。Quartz 自带的 ThreadPool 实现是 org.quartz.simpl.SimpleThreadPool,它在大多数情况下是够用的。它有着十分简单的行为并得到过很好的测试。它提供了一个固定大小的线程池,且线程在 Scheduler 的生命期内是 "活着" 的。
·org.quartz.threadPool.threadCount
这个属性指定了可用于并发执行 Job 的线程的数量。它可设置为一个 1 和 100 之间的正整数。大于 100 的值也是允许的但却不切实际。假如你一天中只有少数几个 Job 要触发,那一个线程就够了。如果你有数以万计的 Job,且每分钟有许多被触发,那么你或许要的线程数就会是 50 或者 100。
·org.quartz.threadPool.threadPriority
这个属性用于指定工作者线程运行的优先级。这个值可是介于 1 和 10 之间的整数。默认为 5,也就是 Thread.NORM_PRIORITY。
·org.quartz.threadPool.makeThreadsDaemons
设置为 true 会使得池中的线程被创建为守护线程。默认为 false。
·org.quartz.threadPool.threadsInheritGroupOfInitializingThread
假如你希望新线程继承自父线程组,就设置为 true。默认为 true。
·org.quartz.threadPool.threadInheritContextClassLoaderOfInitializingThread
假如你希望新线程继承自创建父线程的 Classloader,就设置为 true。默认为 false。
三. 配置 Quartz 监听器
在属性文件中配置 Quartz 监听器涉及到指定名称、类名和任何其他可设置给实例的属性。监听器类必须有一个无参的构造方法;属性可以反射的方法设置。仅支持原始数据类型 (包括 String)。
·配置 JobListener
要配置一个 JobListener,你必须指定一个实现了监听接口的类
org.quartz.jobListener.NAME.class = com.foo.SomeListenerClass
NAME 可以是你想要提供给监听器的任何名称,但它应当与调用这个类的 getName() 的返回值相匹配。你能提供属性给监听器,它们会以反射方式设置给监听器的:
org.quartz.jobListener.NAME.propName = proValue
org.quartz.jobListener.NAME.prop2Name = prop2Value
四. 配置 TriggerListener
配置一个 TriggerListener 的过程很类似于 JobListener 的配置。事实上,除了 jobListener 换成了 TriggerListener 外,就是一样的。
org.quartz.triggerListener.NAME.class = com.foo.SomeListenerClass
你也可以相同的方式提供属性:
org.quartz.triggerListener.NAME.propName = propValue
org.quartz.triggerListener.NAME.prop2Name = prop2Value
关于 Quartz 监听器更多的信息,见第七章,"实现 Quartz 监听器"。
五. 配置 Quartz 插件
配置 Quartz 插件的过程很类似于前面描述的配置监听器。当你有一个实现了 SchedulerPlugin 接口的类,你就可以通过加入如下行来配置插件:
org.quartz.plugin.NAME.class = com.foo.MyPluginClass
这里,NAME 是你指派给插件的名称。你可以提供像下面那样给插件实例传递参数:
org.quartz.plugin.NAME.propName = propValue
org.quartz.plugin.NAME.prop2Name = prop2Value
设置参数时的 NAME 必须与指派给插件的 NAME 相匹配。有关 Quartz 插件的更多信息,见第八章,"使用 Quartz 插件"。