Quartz.NET總結(三)Quartz 配置

轉載自:http://www.cnblogs.com/zhangweizhong/p/4894354.htmlhtml

前兩篇文章,已經介紹了Quartz.NET的使用和Cron表達式表達式的寫法,今天說一說Quartz的配置,Quartz相關的配置有三個quartz.config、quartz_jobs.xml、log4net.config。其中quartz.config是基本的配置, quartz_jobs.xml是相關的job 任務配置文件,log4net.config則是日誌記錄的配置。express

 

1.  quartz.config ,是Quartz.NET是基本的配置,主要是配置quartz_jobs.xml 的路徑,及其餘相關的參數。默認的quartz任務配置文件爲quartz_jobs.xml,在quartz服務的根目錄下,能夠經過quartz.config中quartz.plugin.xml.fileNames = ~/quartz_jobs.xml進行設置。tcp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# You can configure your scheduler in either <quartz> configuration section
 
# or in quartz properties file
 
# Configuration section has precedence
 
  
quartz.scheduler.instanceName = ServerScheduler
 
 
# configure thread pool info
 
quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool, Quartz
 
quartz.threadPool.threadCount = 10
 
quartz.threadPool.threadPriority = Normal
 
  
 
# job initialization plugin handles our xml reading, without it defaults are used
 
quartz.plugin.xml.type = Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz
 
quartz.plugin.xml.fileNames = ~/quartz_jobs.xml
 
  
 
# export this server to remoting context
 
quartz.scheduler.exporter.type = Quartz.Simpl.RemotingSchedulerExporter, Quartz
 
quartz.scheduler.exporter.port = 555
 
quartz.scheduler.exporter.bindName = QuartzScheduler
 
quartz.scheduler.exporter.channelType = tcp
 
quartz.scheduler.exporter.channelName = httpQuartz

 

2. quartz_jobs.xml,是相關的job 任務配置文件。主要是有job和trigger兩個組要的節點。this

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?xml version= "1.0"  encoding= "UTF-8" ?>
 
<!-- This file contains job definitions  in  schema version 2.0 format -->
 
<job-scheduling-data xmlns= "http://quartznet.sourceforge.net/JobSchedulingData"  xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"  version= "2.0" >
 
   <processing-directives>
 
     <overwrite-existing-data> true </overwrite-existing-data>
 
   </processing-directives>
 
   <schedule>
 
     <!--定義Job1-->
 
     <job>
 
       <name>Job1</name>
 
       < group >JobGroup</ group >
 
       <description>Quartz Job1</description>
 
       <job-type>Quartz.Net.Jobs.Job1,Quartz.Net.Jobs</job-type>
 
       <durable> true </durable>
 
       <recover> false </recover>
 
     </job>
 
     <!--定義Job2-->
 
     <job>
 
       <name>Job2</name>
 
       < group >JobGroup</ group >
 
       <description>Quartz Job2</description>
 
       <job-type>Quartz.Net.Jobs.Job2,Quartz.Net.Jobs</job-type>
 
       <durable> true </durable>
 
       <recover> false </recover>
 
     </job>
 
     <!--定義Job1 觸發器 每30秒執行一次Job1任務-->
 
     <trigger>
 
       <cron>
 
         <name>Job1Trigger</name>
 
         < group >JobTriggerGroup</ group >
 
         <job-name>Job1</job-name>
 
         <job- group >JobGroup</job- group >
 
         <cron-expression>0/30 * * * * ?</cron-expression>
 
       </cron>
 
     </trigger>
 
     <!--定義Job2 觸發器 每分鐘執行一次Job2任務-->
 
     <trigger>
 
       <cron>
 
         <name>Job2Trigger1</name>
 
         < group >JobTriggerGroup</ group >
 
         <job-name>Job2</job-name>
 
         <job- group >JobGroup</job- group >
 
         <cron-expression>0 * * * * ?</cron-expression>
 
       </cron>
 
     </trigger>
 
   </schedule>
 
</job-scheduling-data>

job 任務,這個節點是用來定義每一個具體的任務的,多個任務請建立多個job節點便可。spa

 

1. name  任務名稱,同一個group中多個job的name不能相同,如:<name>Job1</name>.net

2. group 任務所屬分組,用於標識任務所屬分組,如:<group>JobGroup</group>
日誌

3. job-type 任務的具體類型及所屬程序集,實現了IJob接口的包含完整命名空間的類名,程序集名稱,如: <job-type>Quartz.Net.Jobs.Job1,Quartz.Net.Jobs</job-type>code

 

其他節點按照默認設置便可。orm

 

trigger 任務觸發器,主要定義在什麼時間,以何種方式觸發任務(job),同一個job能夠定義多個trigger ,各個trigger 各自獨立的執行調度,每一個trigger 中必須定義一種觸發器類型(calendar-interval、simple、cron)。server

calendar-interval使用比較少,通常都是simple和cron,這裏就不作說明。

 

simple 簡單任務的觸發器,能夠調度用於重複執行的任務

1. name 觸發器名稱,同一個分組中的名稱必須不一樣

2. group 觸發器組

3. job-name 要調度的任務名稱,該job-name必須和對應job節點中的name徹底相同 ,如:<job-name>Job1</job-name>

4. job-group 調度任務(job)所屬分組,該值必須和job中的group徹底相同,如:<job-group>JobGroup</job-group>

5. repeat-count  任務執行次數,如:<repeat-count>-1</repeat-count>表示無限次執行,<repeat-count>10</repeat-count>表示執行10次

6. repeat-interval 任務觸發間隔,單位爲毫秒,如:<repeat-interval>10000</repeat-interval> 每10秒執行一次

 

cron 複雜任務觸發器,主要使用cron表達式定製任務調度,通常用的較多的都是cron觸發器。關於cron表達式的寫法,請參考前一篇博客《Quartz.NET總結(二)CronTrigger和Cron表達式》

1. name 觸發器名稱,同一個分組中的名稱必須不一樣

2. group 觸發器組

3. description 觸發器描述

4. job-name 要調度的任務名稱,注意該job-name必須和對應job節點中的name徹底相同,如:<job-name>Job1</job-name>

5. job-group 調度任務(job)所屬分組,該值必須和job中的group徹底相同,如:<job-group>JobGroup</job-group>

6. cron-expression 任務執行的cron表達式,如:<cron-expression>0/30 * * * * ?</cron-expression> 每30秒執行一次

 

其他節點按照默認設置便可。

根據實際項目中的須要靈活配置quartz_jobs.xml,不須要再進行額外的修改其餘後臺代碼,實現靈活的多任務調度,須要注意的是修改了quartz_jobs.xml文件後,quartz服務默認不會從新加載該文件,須要重啓下服務才行。

 

3. log4net.config

(略),請參考其餘關於log4net的配置。

相關文章
相關標籤/搜索