任務排程~Quartz.net實現簡單的任務除錯
任務排程類似於sqlserver中的作業,即按週期性執行某個程式,程式碼段,或者某種服務,在JAVA環境中出現了Quartz,它可以簡單的實現任務的除錯,而像lucene一樣,它會有對於的.net版本,Quartz.net,今天我們來做一個簡單的實驗,其時很簡單的實驗:
環境:.net4.0+mvc3
功能:每1分鐘去向一個檔案裡寫日誌(當然,如果你要呼叫某個服務,只要讓它實現IJob介面即可。
所需要的程式集
首先在WEB.Config的configuration節點裡做一些必要的配置
1 <configSections> 2 <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 3 <sectionGroup name="common"> 4 <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/> 5 </sectionGroup> 6</configSections> 7 <common> 8 <logging> 9 <factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging"> 10 <arg key="showLogName" value="true"/> 11 <arg key="showDataTime" value="true"/> 12 <arg key="level" value="INFO"/> 13 <arg key="dateTimeFormat" value="HH:mm:ss:fff"/> 14 </factoryAdapter> 15 </logging> 16 </common> 17 18 <quartz> 19 <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler"/> 20 21 <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz"/> 22 <add key="quartz.threadPool.threadCount" value="10"/> 23 <add key="quartz.threadPool.threadPriority" value="2"/> 24 25 <add key="quartz.jobStore.misfireThreshold" value="60000"/> 26 <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz"/> 27 </quartz>
在global.asax.cs裡新增呼叫和取消呼叫的程式碼
1 protected void Application_Start() 2 { 3 WriteLogScheduler.Instance.Start(); 4 } 5 6 protected void Application_End(object sender, EventArgs e) 7 { 8 WriteLogScheduler.Instance.Stop(); 9 }
所要呼叫的任務,它需要實現IJob介面
1 /// <summary> 2 /// 要排程的功能模組 3 /// </summary> 4 public class WriteLogJob : IJob 5 { 6 public void Execute(IJobExecutionContext context) 7 { 8 string fileLogPath = AppDomain.CurrentDomain.BaseDirectory; 9 string fileLogName = "TestQuartz_" + DateTime.Now.ToLongDateString() + "_log.txt"; 10 FileInfo finfo = new FileInfo(fileLogPath + fileLogName); 11 using (FileStream fs = finfo.OpenWrite()) 12 { 13 //根據上面建立的檔案流建立寫資料流 14 StreamWriter strwriter = new StreamWriter(fs); 15 //設定寫資料流的起始位置為檔案流的末尾 16 strwriter.BaseStream.Seek(0, SeekOrigin.End); 17 //寫入相關記錄資訊 18 strwriter.WriteLine("發生時間: " + DateTime.Now.ToString()); 19 strwriter.WriteLine("---------------------------------------------"); 20 strwriter.WriteLine(); 21 //清空緩衝區內容,並把緩衝區內容寫入基礎流 22 strwriter.Flush(); 23 strwriter.Close(); 24 fs.Close(); 25 } 26 } 27 28 }
新增呼叫任務的程式碼,Quartz服務核心程式碼
1 public class WriteLogScheduler 2 { 3 4 static ISchedulerFactory _sf = new StdSchedulerFactory(); 5 static IScheduler _sched = _sf.GetScheduler(); 6 static WriteLogScheduler _instance = null; 7 static object lockObj = new object(); 8 9 /// <summary> 10 /// 執行緒安全的單例物件 11 /// </summary> 12 public static WriteLogScheduler Instance 13 { 14 get 15 { 16 if (_instance == null) 17 { 18 lock (lockObj) 19 { 20 if (_instance == null) 21 { 22 _instance = new WriteLogScheduler(); 23 } 24 } 25 } 26 return _instance; 27 } 28 } 29 30 public void Start() 31 { 32 ILog log = LogManager.GetLogger(typeof(WriteLogScheduler)); 33 DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow); 34 // define the job and tie it to our HelloJob class 35 IJobDetail job = JobBuilder.Create<WriteLogJob>() 36 .WithIdentity("job1", "group1") 37 .Build(); 38 // Trigger the job to run on the next round minute 39 ITrigger trigger = TriggerBuilder.Create() 40 .WithIdentity("trigger1", "group1") 41 .StartAt(runTime) 42 .Build(); 43 // Tell quartz to schedule the job using our trigger 44 _sched.ScheduleJob(job, trigger); 45 _sched.Start(); 46 } 47 public void Stop() 48 { 49 _sched.Shutdown(true); 50 } 51 52 }
執行程式,即可看到結果了,下一講,我將把XML配置資訊加進來,以減少程式的鬆耦性。
相關推薦
任務排程~Quartz.net實現簡單的任務除錯
任務排程類似於sqlserver中的作業,即按週期性執行某個程式,程式碼段,或者某種服務,在JAVA環境中出現了Quartz,它可以簡單的實現任務的除錯,而像lucene一樣,它會有對於的.net版本,Quartz.net,今天我們來做一個簡單的實驗,其時很簡單的實驗: 環境:.net4.0+mvc3 功能
任務排程quartz(二)一個簡單的排程平臺的實現
奮戰了幾個大概三個星期,終於實現了一個簡單的排程平臺。不過完全憑自己的個人能力是不可能完成的,筆者是參照公司的專案,學習其中的思想和技術。然後,再融入自己的一點想法,加以改造,就實現了一個比較簡單的排程平臺,同時也非常佩服這些有想法的技術牛人。 首先,來看看一
RDIFramework.NET框架基於Quartz.Net實現任務排程詳解及效果展示
在上一篇Quartz.Net實現作業定時排程詳解,我們通過例項程式碼詳細講解與演示了基於Quartz.NET開發的詳細方法。本篇我們主要講述基於RDIFramework.NET框架整合Quartz.NET,以實現任務排程,並對任務持久化操作的全過程。本文主要通過以下幾個方面講解: 1、任務排程概述 2
C#基於Quartz.NET實現任務排程並部署Windows服務
一、Quartz.NET介紹 Quartz.NET是一個強大、開源、輕量的作業排程框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改寫,可用於winform和asp.net mvc、.Net Core應用中。它靈活而不復雜。你能夠用它來為執行一個作業而建立簡單的或複雜的作業
Topshelf結合Quartz.NET實現服務端定時調度任務
param eve basedir 定時 鏈接庫 uninstall for 技術 編寫 這周接受到一個新的需求:一天內分時間段定時輪詢一個第三方WebAPI,並保存第三方WebAPI結果。 需求分析:分時段、定時開啟、定時結束、輪詢。主要工作集中在前三個上,輪詢其實就是
spring boot 2.0 quartz 輕鬆實現定時任務和作業排程
最近在做一個彩票相關的專案,主要涉及到不定時開獎,不定時封盤,原本打算使用spring boot 自帶的Schedule進行這一系列的工作,由於不能自動的新增定時任務,所以使用quartz,spring boot 2.0集成了quartz,所以決定嘗試下quartz用
使用quartz+spring實現簡單的可配置化的定時任務(可和資料庫配套使用)
需要的jar包: spring-context-support-4.0.1.RELEASE.jar quartz-2.2.1.jar 首先定義一個job要實現Job介面,以後各種各樣的任務都放在這個job中執行: import org.quartz.Job; import
Spring+Quartz框架實現定時任務(集群,分布式)
log cor alt 放置 這一 表達 mod 建數據庫 strac 1、定時任務的必要性:定時任務在應用中的重要性不言而喻,大多是應用,特別是金融應用更是離不開定時任務,能用定時任務來處理異常訂單,完成跑批,定時活動(雙11)等。在初期應用的訪問量並不是那麽大,
Spring整合Quartz框架實現定時任務跑批(Maven完整版)
觸發器 delay cut www 方法 lin job 定時任務 任務調度 Quartz 介紹Quartz is a full-featured, open source job scheduling service that can be integrated with
基於Quartz.net的遠端任務管理系統 二
緊接著上一篇。上一篇講了表設計與ADO.Net基本操作。接下來,就來說說怎麼動態來新增Job任務及清理過期任務吧。 首先,先理一下思路,做事情要先把思緒理清了,然後下手就快準狠了。下面是我的思路:做一個定時任務去檢查任務表(job_info)中的所有Job,如果在Schedule中不存在的,則新增進來;
基於Quartz.net的遠端任務管理系統 三
在上一篇中,已經把服務端都做好了。那接下來就是Web的管理端了,因為很多時候伺服器是有專門的運維來管理的,我們沒有許可權去操作,所以有個可以管理Job的工具還是很有必要的。 Web管理端,我選擇現在很成熟的asp.net MVC來做,因為相信大家對於這個已經非常的熟悉了,這樣上手比較快。
SpringBoot+Quartz學習實現定時任務控制Trigger的增加、啟用、刪除、休眠
SpringBoot+Quartz學習實現定時任務控制Trigger的增加、啟用、刪除、休眠 標籤(空格分隔): SpringBoot Quartz 文章目錄 SpringBoot+Quartz學習實現定時任務控制Trigger的增加、啟用、刪除、休眠
spring定時任務排程quartz
1.maven依賴 <!-- 定時任務 --> <dependency> <groupId>quartz</groupId> <artifactId>quartz</artifactId> <v
Quartz任務排程框架(啟動定時任務框架)
Quartz任務排程框架(啟動定時任務框架) Quartz是OpenSymphony開源組織在Jobscheduling領域又一個開源專案,它可以與J2EE與J2SE應用程式相結合也可以單獨使用。Quartz可以用來建立簡單或為執行十個,百個,甚至是好幾萬個Jobs這樣複雜的
基於Quartz.net的遠端任務管理系統-起緒
Quartz.net這一個任務排程框架,相信大部分的開發者都非常的熟悉了。 往往在一個專案之中,我們會有很多的定時任務,加之多人蔘與編碼,難免會有些難於管理等問題。為統一編寫規範,以及對定時任務的管理,故開發了這一套任務管理系統以供使用。 話不多說,先來看看整體框架吧。如右圖。任務服務以WinServer為依
基於Quartz.net的遠端任務管理系統 一
在上一篇緒中,已經介紹了整個專案的情況下了,接下來就是開始一步步做起來了。 首先:先整個我們的Job任務表,以及Job執行日誌表。SQL如下: 1 drop table if exists job_info; 2 create table job_info 3 ( 4 id int not
TopShelf+Quartz.net實現window定時排程服務
1、新建控制檯應用,通過nuget安裝Quartz和topshelf、log4net Install-Package Quartz Install-Package Common.Logging Install-Package log4net Install
Spring 3整合Quartz 2實現定時任務三:動態暫停 恢復 修改和刪除任務
前面我們已經完成了spring 3和quartz 2的整合以及動態新增定時任務,我們接著來完善它,使之能支援更多的操作,例如暫停、恢復、修改等。 在動態新增定時任務中其實已經涉及到了其中的一些程式碼,這裡我們再來細化的理一理。先來看一下我們初步要實現的目標效果圖,這裡
spring quartz動態實現對任務的增刪改查(可傳引數)
上一篇文章寫到了關於定時任務的動態實現,在一些情況下,我們可能需要傳引數來實現定時任務,直接貼程式碼了QuartzParamUtils,核心類package com.thinkgem.jeesite.modules.task.quartz.param; im
[譯]Java定時任務排程-Quartz文件(九)Job Stores
JobStore主要是追蹤排程過程中所有的資料,包括jobs、triggers、calendars等等。為Quartz Scheduler選擇合適的JobStore是很重要的。幸運的是,一旦瞭解了JobStore的區別,這是一件很簡單的事。一般在Schedule