首页 > 代码库 > quarzt(官方)---给自己看的文档(TriggerListeners和JobListeners)
quarzt(官方)---给自己看的文档(TriggerListeners和JobListeners)
侦听器是您根据调度程序中发生的事件创建的对象。 您可能会猜到, TriggerListeners会接收与触发器相关的事件, JobListeners会接收与作业相关的事件。
触发器相关的事件包括:触发器触发,触发失灵(在本文档的“触发器”部分中讨论),并触发完成(触发器关闭的作业完成)。
org.quartz.TriggerListener接口
public interface TriggerListener {
public String getName();
public void triggerFired(Trigger trigger, JobExecutionContext context);
public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context);
public void triggerMisfired(Trigger trigger);
public void triggerComplete(Trigger trigger, JobExecutionContext context,
int triggerInstructionCode);
}
作业相关事件包括:作业即将执行的通知,以及作业完成执行时的通知。
org.quartz.JobListener接口
public interface JobListener {
public String getName();
public void jobToBeExecuted(JobExecutionContext context);
public void jobExecutionVetoed(JobExecutionContext context);
public void jobWasExecuted(JobExecutionContext context,
JobExecutionException jobException);
}
使用您自己的听众
要创建监听器,只需创建一个实现org.quartz.TriggerListener和/或org.quartz.JobListener接口的对象。 然后,侦听器在运行时将其注册到调度程序中,并且必须给出一个名称(或者,他们必须通过他们的getName()方法来宣传自己的名字)。
为了方便起见,比实现这些接口,您的类还可以扩展JobListenerSupport类或TriggerListenerSupport类,并且只需覆盖您感兴趣的事件。
侦听器与调度程序的ListenerManager一起注册,并且描述了监听器想要接收事件的作业/触发器的Matcher。
侦听器在运行时间内与调度程序一起注册,并且不会与作业和触发器一起存储在JobStore中。 这是因为监听器通常是与应用程序的集成点。 因此,每次应用程序运行时,都需要重新注册该调度程序。
添加对特定作业感兴趣的JobListener:
scheduler.getListenerManager()。addJobListener(myJobListener,KeyMatcher.jobKeyEquals(new JobKey(“myJobName”,“myJobGroup”)));
您可能需要为匹配器和关键类使用静态导入,这将使您定义匹配器更清洁:
import static org.quartz.JobKey.*;
import static org.quartz.impl.matchers.KeyMatcher.*;
import static org.quartz.impl.matchers.GroupMatcher.*;
import static org.quartz.impl.matchers.AndMatcher.*;
import static org.quartz.impl.matchers.OrMatcher.*;
import static org.quartz.impl.matchers.EverythingMatcher.*;
...etc.
其中将上述示例转换为:
scheduler.getListenerManager().addJobListener(myJobListener, jobKeyEquals(jobKey("myJobName", "myJobGroup")));
添加对特定组的所有作业感兴趣的JobListener:
scheduler.getListenerManager().addJobListener(myJobListener, jobGroupEquals("myJobGroup"));
添加对两个特定组的所有作业感兴趣的JobListener:
scheduler.getListenerManager().addJobListener(myJobListener, or(jobGroupEquals("myJobGroup"), jobGroupEquals("yourGroup")));
添加对所有作业感兴趣的JobListener:
scheduler.getListenerManager().addJobListener(myJobListener, allJobs());
...注册TriggerListeners的工作原理相同。
Quartz的大多数用户并不使用侦听器,但是当应用程序需求创建需要事件通知时,方便,而Job不必明确地通知应用程序。
quarzt(官方)---给自己看的文档(TriggerListeners和JobListeners)