Quartz.NET 2.x 文件翻譯 - Lesson 7:TriggerListeners 和JobListeners

龐順龍發表於2019-05-11

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本身明確的來通知應用。

返回目錄

龐順龍最後編輯於:3年前

內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。

相關文章