Quartz.NET-课程7:TriggerListeners和JobListeners

监听器是用于根据调度程序中发生的事件执行操作的对象。正如您猜想的那样,TriggerListeners接收与触发器相关的事件,JobListeners接收与作业相关的事件。

与触发相关的事件包括:触发触发(trigger firings),触发失误(trigger mis-firings)(在本文档的“触发”部分讨论)和触发完成(trigger completions)(触发完成的任务)。

ITriggerListener接口

public interface ITriggerListener
{
	 string Name { get; }
	 
	 Task TriggerFired(ITrigger trigger, IJobExecutionContext context);
	 
	 Task<bool> VetoJobExecution(ITrigger trigger, IJobExecutionContext context);
	 
	 Task TriggerMisfired(ITrigger trigger);
	 
	 Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, int triggerInstructionCode);
}

与作业相关的事件包括:作业即将执行的通知以及作业完成执行时的通知。

IJobListener接口

public interface IJobListener
{
	string Name { get; }

	Task JobToBeExecuted(IJobExecutionContext context);

	Task JobExecutionVetoed(IJobExecutionContext context);

	Task JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException);
} 

Using Your Own Listeners

要创建一个监听器,只需创建一个实现对象,即实现ITriggerListener和/或IJobListener接口。然后,监听器在运行时注册到调度器,并且必须给出一个名称(或者说,他们必须通过他们的Name属性宣传他们自己的名字)。

为了您的方便,您的类可以扩展JobListenerSupport类或TriggerListenerSupport类,而不是实现那些接口,并简单地覆盖您感兴趣的事件。

监听器(Listeners)向调度程序的ListenerManager注册了一个匹配器,该匹配器描述了侦听器想要接收事件的作业/触发器。

监听器在运行时向调度器中注册,并且不会与作业和触发器一起存储在JobStore中。这是因为监听器通常是与您的应用程序的集成点。因此,每次运行应用程序时,都需要使用调度程序重新注册侦听程序。

添加对特定作业感兴趣的JobListener:

scheduler.ListenerManager.AddJobListener(myJobListener, KeyMatcher<JobKey>.KeyEquals(new JobKey("myJobName", "myJobGroup")));

添加对特定组的所有作业感兴趣的JobListener:

scheduler.ListenerManager.AddJobListener(myJobListener, GroupMatcher<JobKey>.GroupEquals("myJobGroup"));

添加对两个特定组的所有作业感兴趣的JobListener:

scheduler.ListenerManager.AddJobListener(myJobListener,
	OrMatcher<JobKey>.Or(GroupMatcher<JobKey>.GroupEquals("myJobGroup"), GroupMatcher<JobKey>.GroupEquals("yourGroup")));

添加对所有作业感兴趣的JobListener:

scheduler.ListenerManager.AddJobListener(myJobListener, GroupMatcher<JobKey>.AnyGroup());

Listeners不被Quartz.NET的大多数用户使用,但当应用程序需求创建事件通知需求时不需要Job本身明确地通知应用程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值