回到顶部

Quartz.NET 2.x 文档翻译 - Lesson 7:TriggerListeners 和JobListeners

时间:2年前   作者:请喊我大龙哥   浏览:236   [站内原创,转载请注明出处]

Quartz.NET 2.x 文档翻译 - Lesson 7:TriggerListeners 和JobListeners 查看官网英文原文

返回目录

Listener就是scheduler调度执行我们创建的任务执行发生的事件监听对象,比如,TriggerListeners接收和triggers有关系的事件,JobListeners接收和job相关的事件。

触发事件主要包括:trigger触发,trigger触发misfire,trigger触发完成。

ITriggerListener 接口

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

Job相关的事件包括:通知job执行,job完成通知。

IJobListener 接口:

The IJobListener Interface
public interface IJobListener
{
	string Name { get; }

	void JobToBeExecuted(IJobExecutionContext context);

	void JobExecutionVetoed(IJobExecutionContext context);

	void JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException);
} 

Using Your Own Listeners

创建一个listener监听器,只需要创建一个对象并实现是itriggerlistener和/或ijoblistener接口就可以了。Listeners 稍后会在运行的时候在scheduler注册,需要注意的是我们必须给监听器命名name属性。

为了使用方便,与其实现这些接口,我们也可以扩展JobListenerSupport或TriggerListenerSupport类,重写我们需要使用的事件就ok了。

Listeners监听注册在scheduler的ListenerManager通过匹配的方式用来接收Jobs/Triggers的事件。

Listeners监听在scheduler运行时注册,并不会在JobStore中存储。这是因为监听器通常是应用程序的一个集成点。因此,每次我们的应用程序运行时,监听器都需要重新注册scheduler调度程序。 
 
添加一个JobListener监听一个特定的job:
scheduler.ListenerManager.AddJobListener(myJobListener, KeyMatcher<JobKey>.KeyEquals(new JobKey("myJobName", "myJobGroup")));
添加一个JobListener监听一个特定的group组中的所有job:
scheduler.ListenerManager.AddJobListener(myJobListener, GroupMatcher<JobKey>.GroupEquals("myJobGroup"));
添加一个JobListener监听两个特定的group组中的所有job:
scheduler.ListenerManager.AddJobListener(myJobListener,
OrMatcher<JobKey>.Or(GroupMatcher<JobKey>.GroupEquals("myJobGroup"), GroupMatcher<JobKey>.GroupEquals("yourGroup")));
添加一个JobListener监听所有job:
scheduler.ListenerManager.AddJobListener(myJobListener, GroupMatcher<JobKey>.AnyGroup());

Listener监听并非是quartz.net的大多数用户使用,但如果我们的应用有创建事件通知的需求时,我们就需要job本身明确的来通知应用。

返回目录

请喊我大龙哥最后编辑于:2年前

内容均为作者独立观点,不代表八零IT人立场,如涉及侵权,请及时告知。

评论努力加载中...
暂无评论
暂无评论

手机扫码阅读

热门相关

加载中...
关于我们   联系我们   申请友链   赞助记录   站点地图
© 2014 - 2017 www.80iter.com All Rights Reserved. 京ICP备14042174号-1
本站遵循 CC BY 4.0 协议,转载请注明出处 。