Quartz的自定义插件
Posted mlfz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Quartz的自定义插件相关的知识,希望对你有一定的参考价值。
quartz本身插件:
LoggingJobHistoryPlugin,LoggingTriggerHistoryPlugin分别可以打印scheduler容器管理的所有triggers和jobDetails的运行日志。 插件XMLSchedulingDataProcessorPlugin
支持使用xml方式管理trigger&job任务(不同于spring对quartz的封装,但很类似), 一个是支持scheduler的管理的插件。JobInterruptMonitorPlugin监控job执行假死插件(执行时间过长)。ShutdownHookPlugin 捕获JVM终止的事件,并在调度程序上调用shutdown
我们可以自定义插件
public class QuartzPlugins implements SchedulerPlugin, JobListener { private String name; private Scheduler scheduler; @Override public void initialize(String s, Scheduler scheduler, ClassLoadHelper classLoadHelper) throws SchedulerException { this.name = s; this.scheduler = scheduler; log.info("--------------------初始化自定义插件 {}-----------------", name); scheduler.getListenerManager().addJobListener(this, EverythingMatcher.allJobs()); } @Override public void start() { log.info("--------------------启动自定义插件 {}-----------------", name); } @Override public void shutdown() { log.info("--------------------关闭自定义插件 {}-----------------", name); } /** * 方法返回一个字符串用以说明 JobListener 的名称 */ @Override public String getName() { return "spz-spz"; } /** * Scheduler 在 JobDetail 将要被执行时调用这个方法 */ @Override public void jobToBeExecuted(JobExecutionContext jobExecutionContext) { log.info("[自定义插件] 被执行时 " + jobExecutionContext.getJobRunTime()); } /** * Scheduler 在 JobDetail 即将被执行,但又被 TriggerListener 否决了时调用这个方法。 */ @Override public void jobExecutionVetoed(JobExecutionContext jobExecutionContext) { log.info("[自定义插件] 即将被执行" + jobExecutionContext.getJobRunTime()); } /** * Scheduler 在 JobDetail 被执行完毕 */ @Override public void jobWasExecuted(JobExecutionContext jobExecutionContext, JobExecutionException e) { log.info("[自定义插件] JobListener 执行之后" + jobExecutionContext.getJobRunTime()); } }
以上是关于Quartz的自定义插件的主要内容,如果未能解决你的问题,请参考以下文章