国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Quartz.net使用總結

2019-11-17 01:50:22
字體:
來源:轉載
供稿:網友

Quartz.net使用總結

進來項目中用到了 任務調度 來實現短信發送網關,所以這里分享下Quartz.net 的使用經驗。任務調度選用了 Quartz.net 來實現,之前用的是C#中自帶的window服務安裝,這次也打算用Topshel來做window服務,其實感覺差不多。ok,接下來說下 Quartz.net 在開發中的使用:

Quartz.NET簡介

作業調度的目標在于按照預先確定的時間和指定的順序來確保高效的數據處理流程,從而最大限度的使用系統資源。批處理流程是一種在無需最終用戶干預的方式下在后臺通過順序方式運行的操作。

Quartz.NET是一個開源的作業調度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#寫成,可用于winform和asp.net應用中。它提供了巨大的靈活性而不犧牲簡單性。你能夠用它來為執行一個作業而創建簡單的或復雜的調度。它有很多特征,如:數據庫支持,集群,插件,支持cron-like表達式等等。

Quartz.NET 是一個開源的作業調度框架,它可以被在小型應用程序甚至是企業級的應用程序。它有如下幾個特點:

  • API 操作簡單,只要幾行簡單的代碼你就可以在應用程序里面實現自己的作業調度,并實時監視作業執行情況
  • 觸發器功能強大,比 Windows 的任務計劃提供更細的觸發粒度,你可以使用“Cron表達式(后文將介紹)”來實現如:每周星期一到星期五 8:00am,5:00pm(工作時間) 執行某一件任務
  • 良好的可擴展性,它基于接口編程,你可以實現自己的 Schedule 調度器,Job 作業,以及 Trigger 觸發器等
  • 作業可以保存在 RAM 中,也可以持久化到數據庫,支持多種數據庫類型:SqlServer、OracleMySQL
  • 集群,這是一個高級應用,可以在多臺計算機之間創建負載平衡、容錯處理

Quartz.NET使用

首先引用下面的dll

前4個是Quartz.NET使用所必須的,Toshelf是用來做window服務所用的

添加QuartzHelp類庫

添加JobDemo.cs,實現IJob接口。

 1 namespace QuartzHelp 2 { 3     public class JobDemo : IJob 4     { 5         //日志對象 6         PRivate static readonly ILog logger = LogManager.GetLogger(typeof(JobDemo)); 7  8         public void Execute(IJobExecutionContext context) 9         {10             logger.Info("JobDemo開始運作,模擬處理200ms的程序");11             Thread.Sleep(200);12             logger.Info("JobDemo處理完");13         }14     }15 }
View Code

添加WindowControl 控制臺

添加Service.cs文件,作為任務調度的入口

 1 namespace WindowControl 2 { 3     public class Service 4     { 5         private readonly ILog logger; 6         private IScheduler scheduler; 7         public Service() 8         { 9             logger = LogManager.GetLogger(typeof(Service));10             ISchedulerFactory schedulerFactory = new StdSchedulerFactory();11             scheduler = schedulerFactory.GetScheduler();12         }13 14         public void Start()15         {16             scheduler.Start();17             logger.Info("Quartz服務成功啟動");18         }19 20         public void Stop()21         {22             scheduler.Shutdown(true);23             logger.Info("Quartz服務成功終止");24         }25 26     }27 }
View Code

在Program.cs文件中,啟動任務調度

 1 namespace WindowControl 2 { 3     class Program 4     { 5         static void Main(string[] args) 6         { 7             HostFactory.Run(x => 8             { 9                 x.Service<Service>((s) =>10                 {11                     s.SetServiceName("ser");12                     s.ConstructUsing(name => new Service());13                     s.WhenStarted((t) => t.Start());14                     s.WhenStopped((t) => t.Stop());15                 });16 17                 x.RunAsLocalSystem();18 19                 //服務的描述20                 x.SetDescrView Code

添加配置文件

新建一個Configs的文件夾,首先添加quartz_jobs.xml(作為 調度任務 的配置文件)

 1 <?xml version="1.0" encoding="UTF-8"?> 2  3 <!-- This file contains job definitions in schema version 2.0 format --> 4  5 <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"> 6  7   <processing-directives> 8     <!-- 在計劃作業和觸發器是應遵循的命令和原則 --> 9     <overwrite-existing-data>true</overwrite-existing-data>10   </processing-directives>11 12   <schedule>13     <job>14       <name>myJob</name>15       <group>myJobGroup</group>16       <description>第一個工作任務</description>17       <job-type>QuartzHelp.JobDemo, QuartzHelp</job-type>18       <durable>true</durable>19       <recover>false</recover>20     </job>21     <trigger>22       <cron>23         <name>Trigger</name>24         <group>TriggerGroup</group>25         <description>Simple trigger to simply fire sample job</description>26         <job-name>myJob</job-name>27         <job-group>myJobGroup</job-group>28         <!--每10秒中執行一次-->29         <cron-expression>0/01 * * * * ?</cron-expression>30       </cron>31     </trigger>32   </schedule>33 </job-scheduling-data>
View Code

quartz_jobs.xml配置項說明:

 1 <?xml version="1.0" encoding="utf-8" ?> 2 <!-- This file contains job definitions in schema version 2.0 format --> 3  4 <!--在2.0版本中根結點由<quartz> 變為了<job-scheduling-data>--> 5  <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"> 6  7    <!--保持默認配置即可,具體作用有待研究--> 8    <processing-directives> 9     <overwrite-existing-data>true</overwrite-existing-data>10   </processing-directives>11 12    <!--任務調度集合-->13    <schedule>14      <!--2.0版本中的job相當于1.x版本中的<job-detail>,這個節點是用來定義每個具體的任務的,多個任務請創建多個job節點即可-->15      <job>16        <!--任務名稱,同一個group中多個job的name不能相同,若未設置group則所有未設置group的job為同一個分組(必須設置)-->17        <name>sampleJob</name>18        <!--任務所屬分組,用于標識任務所屬分組-->19        <group>sampleGroup</group>20        <!--工作任務的描述,用于描述任務具體內容-->21       <description>Sample job for Quartz Server</description>22        <!--任務類型,任務的具體類型及所屬程序集,格式:實現了IJob接口的包含完整命名空間的類名,程序集名稱-->23        <job-type>Quartz.Server.SampleJob, Quartz.Server</job-type>24        <!--<durable>(持久性)-如果一個Job是不持久的, 一旦沒有觸發器與之關聯,它就會被從scheduler 中自動刪除-->25       <durable>true</durable>26       <recover>false</recover>27
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鲁甸县| 耒阳市| 华亭县| 许昌县| 丰宁| 钟祥市| 清徐县| 阳谷县| 荣成市| 肥城市| 灵台县| 海阳市| 穆棱市| 蕉岭县| 肥乡县| 滨海县| 开原市| 泰来县| 罗定市| 保山市| 柯坪县| 蚌埠市| 沂南县| 五常市| 五台县| 句容市| 千阳县| 郯城县| 海口市| 肥乡县| 安庆市| 遂川县| 蓝田县| 台南市| 来安县| 沁水县| 正镶白旗| 调兵山市| 乾安县| 永福县| 西青区|