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

二. 配置 Quartz ThreadPool

表 A.2 列出了配置 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 插件"。

类别: Quartz. 标签: , . 阅读(1,076). 订阅评论. TrackBack.

Leave a Reply

Be the First to Comment!

avatar