Quartz Job Scheduling Framework[翻译]第七章. 实现 Quartz 监听器 (第七部分)

八. 监听器中的线程使用

你看到了监听器接口中的方法后,你或许想知道是线程在调用监听器方法中饰演着什么样的角色。基实监听器方法是存在一个时序的,正如你看到方法名能想像到的那样。在一个 Job 执行的生命周期中,调用监听器方法以的顺序通常是固定的。图 7.2 描绘了监听方法的调用顺序和所涉及到的工作者线程。

图 7.2. 监听器方法按某一特定的时序被调用调用监听器方法的时序是固定的。如图 7.2 所示,在 Job 的执行前后,调用 Job 的 execute() 方法相同的线程被用于调用 JobListenerTriggerListener 的方法。假如你使用任何类类型的第三方线程管理工具或者打算实现你自己的线程池管理,知道这一点是很重要的。假如你在监听方法中实现了一个长运行逻辑时,这也会带来对性能上的负面影响。因为调用监听方法的线程和执行 Job 是同一个工作者线程,你不应该把监听方法实现的太复杂并要花费较长时间才能完成。保持它们的执行时间尽可能短。


九. Quartz 监听器的使用

了解了这所有的知识之后,那你能拿这些监听器做什么呢?实际上,你可以做相当多的事情。首先,值得注意的是,在内部,Quartz 使用这些监听器来帮助管理 Scheduler 和你的 Job 和 Trigger。框架还包含两个实现了监听器接口的插件,它们记录所有 Job 的日志和触发历史:分别为 org.quartz.plugins.history.LoggingJobHistoryPluginorg.quartz.plugins.history.LogginTriggerHistoryPlugin。我们在下一章讲到 Quartz 插件。

这里有一些监听的使用:

    ·捕获错过触发和重新的部署

    ·成功执行完一个 Job 后发送一个 e-mail

    ·基于数据库中设置的标记否决 Job 的执行

    ·基于一个 Job 执行的成功或失败部署其他的 Job

    ·记录一个 Job 的实际运行时间

这些仅是一些想法。当你的 Quartz 应用运行期间出现特定的事件时,Quartz 监听器为你提供了一种方法接收到编程角度上的通知。你选择什么来应用那些知道,如果有的话,完全由你而定。

QuartzFigure7.2.JPG

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

Leave a Reply

Be the First to Comment!

avatar
wpDiscuz