日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Quartz.net通过配置文件来完成作业调度

發(fā)布時(shí)間:2024/4/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Quartz.net通过配置文件来完成作业调度 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

將Quartz.NET集成到 Castle中 例子代碼使用的Quartz.net版本是0.6,Quartz.NET 0.9 發(fā)布了 ,最新版本支持通過配置文件來完成后臺(tái)的作業(yè)調(diào)度,不必手工創(chuàng)建Trigger和Scheduler。將QuartzStartable 改造如下:

using System;
using System.Collections.Generic;
using System.Text;

using Castle.Core;
using Quartz.Impl;
using Quartz;
using Common.Logging;
using System.Threading;
using System.IO;
using Quartz.Xml;
using System.Collections;

namespace QuartzComponent
{
??? [Transient]
??? public class QuartzStartable : IStartable
??? {
??????? private ISchedulerFactory _schedFactory;
??????? private JobSchedulingDataProcessor processor;

??????? private static ILog log = LogManager.GetLogger(typeof(QuartzStartable));

??????? public QuartzStartable(ISchedulerFactory schedFactory)
??????? {
??????????? _schedFactory = schedFactory;
??????????? processor = new JobSchedulingDataProcessor(true, true);
??????? }

??????? public void Start()
??????? {
??????????? log.Info("Starting service");
??????????? IScheduler sched = _schedFactory.GetScheduler();

??????????? //log.Info("------- Scheduling Jobs ----------------");

??????????? jobs can be scheduled before sched.start() has been called

??????????? get a "nice round" time a few seconds in the future...
??????????? //DateTime ts = TriggerUtils.GetNextGivenSecondDate(null, 15);

??????????? job1 will only fire once at date/time "ts"
??????????? //JobDetail job = new JobDetail("job1", "group1", typeof(SimpleQuartzJob));
??????????? //SimpleTrigger trigger = new SimpleTrigger("trigger1", "group1");
??????????? set its start up time
??????????? //trigger.StartTimeUtc = ts;
??????????? set the interval, how often the job should run (10 seconds here)
??????????? //trigger.RepeatInterval = 10000;
??????????? set the number of execution of this job, set to 10 times.
??????????? It will run 10 time and exhaust.
??????????? //trigger.RepeatCount = 100;


??????????? schedule it to run!
??????????? //DateTime ft = sched.ScheduleJob(job, trigger);
??????????? //log.Info(string.Format("{0} will run at: {1} and repeat: {2} times, every {3} seconds",
??????????? //??? job.FullName, ft.ToString("r"), trigger.RepeatCount, (trigger.RepeatInterval / 1000)));
??????????? //log.Info("------- Waiting five minutes... ------------");

??????????? //sched.Start();
??????????? Stream s = ReadJobXmlFromEmbeddedResource("MinimalConfiguration.xml");
??????????? processor.ProcessStream(s, null);
??????????? processor.ScheduleJobs(new Hashtable(), sched, false);
??????????? sched.Start();
??????????? try
??????????? {
??????????????? // wait five minutes to show jobs
??????????????? Thread.Sleep(300 * 1000);
??????????????? // executing...
??????????? }
??????????? catch (ThreadInterruptedException)
??????????? {
??????????? }


??????? }

??????? private static Stream ReadJobXmlFromEmbeddedResource(string resourceName)
??????? {
??????????? string fullName = "QuartzComponent." + resourceName;
??????????? return new StreamReader(typeof(QuartzStartable).Assembly.GetManifestResourceStream(fullName)).BaseStream;
??????? }

??????? public void Stop()
??????? {
??????????? log.Info("Stopping service");
??????????? try
??????????? {
??????????????? IScheduler scheduler = _schedFactory.GetScheduler();
??????????????? scheduler.Shutdown(true);
??????????? }
??????????? catch (SchedulerException se)
??????????? {
??????????????? log.Error("Cannot shutdown scheduler.", se);
??????????? }

??????? }
??? }
}
增加一個(gè)配置文件MinimalConfiguration.xml,設(shè)置為嵌入資源類型。內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<quartz xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
??????? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
????version="1.0"
????overwrite-existing-jobs="true">
?
? <job>
??<job-detail>
???<name>jobName1</name>
???<group>jobGroup1</group>
???<job-type>QuartzComponent.SimpleQuartzJob, QuartzComponent</job-type>
??</job-detail>
? ?
??<trigger>
???<simple>
????<name>simpleName</name>
????<group>simpleGroup</group>
????<job-name>jobName1</job-name>
????<job-group>jobGroup1</job-group>
????<start-time>2007-12-09T18:08:50</start-time>
????<repeat-count>100</repeat-count>
????<repeat-interval>3000</repeat-interval>
???</simple>
????? </trigger>
? ?<trigger>
? ??<cron>
? ???<name>cronName</name>
? ???<group>cronGroup</group>
? ???<job-name>jobName1</job-name>
? ???<job-group>jobGroup1</job-group>
? ???<start-time>1982-06-28T18:15:00+02:00</start-time>
? ???<cron-expression>0/10 * * * * ?</cron-expression>
? ??</cron>
? ?</trigger>
?</job>
</quartz>
可以看到,在配置文件中把jobdetail和trigger都作了完整的定義,并組合成一個(gè)job。

當(dāng)然也可以在quartz.properties文件中設(shè)置一個(gè)quertz_job.xml文件,例如:

??????????? // First we must get a reference to a scheduler
??????????? NameValueCollection properties = new NameValueCollection();
??????????? properties["quartz.scheduler.instanceName"] = "XmlConfiguredInstance";
???????????
??????????? // set thread pool info
??????????? properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz";
??????????? properties["quartz.threadPool.threadCount"] = "5";
??????????? properties["quartz.threadPool.threadPriority"] = "Normal";

??????????? // job initialization plugin handles our xml reading, without it defaults are used
??????????? properties["quartz.plugin.xml.type"] = "Quartz.Plugin.Xml.JobInitializationPlugin, Quartz";
??????????? properties["quartz.plugin.xml.fileNames"] = "~/quartz_jobs.xml";
??????????? ISchedulerFactory sf = new StdSchedulerFactory(properties);

這樣,在啟動(dòng)Castle的時(shí)候,Quartz.Plugin.Xml.JobInitializationPlugin就會(huì)自動(dòng)讀取quartz.properties這個(gè)配置文件,并初始化調(diào)度信息,啟動(dòng)Scheduler。

一個(gè)Job類,一個(gè)quartz.properties文件,一個(gè)quertz_job.xml文件,非常簡(jiǎn)單靈活。

下載例子代碼 :QuartzComponentWithXml.zip

轉(zhuǎn)載于:https://www.cnblogs.com/shanyou/archive/2007/12/09/988502.html

總結(jié)

以上是生活随笔為你收集整理的Quartz.net通过配置文件来完成作业调度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品国产精品国 | 最新中文字幕在线观看 | 国产sss| 国产熟女一区二区丰满 | 日韩高清一二三区 | 九草av| 深爱激情综合 | 精品人妻伦一二三区久 | 国产精品s | 伊人网视频在线观看 | 日韩视频免费观看高清 | 疯狂做爰的爽文多肉小说王爷 | 肥臀熟女一区二区三区 | 秋霞福利视频 | 日本欧美色图 | 手机av免费观看 | 日本a级片视频 | 情侣作爱视频网站 | 哈利波特3在线观看免费版英文版 | 毛茸茸free性熟hd | 日韩高清精品免费观看 | 国模私拍在线观看 | 国产精品毛片一区二区在线看舒淇 | 激情视频网站 | 黄色永久视频 | 免播放器在线视频 | 成人做爰www看视频软件 | 五月婷婷,六月丁香 | 狠狠搞av| 天天操夜夜干 | 日本h视频在线观看 | 日韩欧美一二三 | 特种兵之深入敌后高清全集免费观看 | 欧美性黄色 | 首尔之春在线观看 | 国产毛片在线视频 | 香蕉视频97| 台湾佬美性中文网 | 91精品久久久久久久 | 蜜桃av一区二区三区 | 插插宗合网 | 在线视频1卡二卡三卡 | 朱竹清到爽高潮痉挛 | 亚洲色图欧美在线 | h视频在线免费看 | 特级毛片在线播放 | 亚洲最大的成人网 | 激情小说图片视频 | 人人插人人看 | 日本公妇乱淫免费视频一区三区 | 依人综合 | 精品国产黄色片 | 少妇精品高潮欲妇又嫩中文字幕 | 日韩免费观看av | 国产伦精品一区二区三区视频免费 | 国产在线拍揄自揄拍无码视频 | 久久精品视频偷拍 | 一级片久久 | 日本精品久久久久 | 欧美激情综合 | 亚洲精品中文字幕 | 中文字幕伊人 | 免费看日韩av | 国产精品丝袜 | 日本一区二区三区免费在线观看 | 亚洲一区二区三区久久久成人动漫 | 亚洲av熟女一区 | 91精品国产成人观看 | 三级欧美韩日大片在线看 | 午夜一二三 | 干极品美女 | 亚洲一区二区乱码 | 大陆女明星乱淫合集 | 在线观看网站av | 国产一级片精品 | 精品少妇久久 | 日本欧美久久久久免费播放网 | 波多野结衣在线免费视频 | 91av中文字幕| 日b免费视频| 狠狠干女人 | 中文在线www | 爱爱视频一区二区 | 日韩女同互慰一区二区 | www亚洲视频 | 国产伦精品一区二区三区免费迷 | 精品99久久久 | 91夜色 | 69精品国产| 天天干天天爽天天操 | 光棍影院av | 日本精品在线观看 | 日韩在线高清视频 | 国产偷啪| 日韩人妻一区二区三区蜜桃视频 | 日本伊人网 | 99久久免费看精品国产一区 | 欧美专区在线播放 | 海角官网|