Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于WinForm和ASP.NET应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。
你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用.NET编程吗?如果这些问题中任何一个你回答是,那么你应该使用Quartz.NET调度器。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了
Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。
Quartz.NET使用Trigger,Job和JobDetail对象的组合来实现工作调度,可以参考博客:http://www.cnblogs.com/shanyou/archive/2007/08/25/QuartzNETtutorial.html
Spring.NET现在已经支持了Quartz.NET,在以后的开发中我们仅需要配置一下属性就能轻松使用Quartz.NET。
Spring.NET提供了QuartzJobObject基类,该类继承IJob接口。实现一个Job我们可以继承该类。或者配置Spring.NET提供的MethodInvokingJobDetailFactoryObject对象。而实现JobDetail则使用Spring.NET提供的JobDetailObject类。另外Spring.NET为我们提供了两种Trigger:Spring.Scheduling.Quartz.SimpleTriggerObject和Spring.Scheduling.Quartz.CronTriggerObject。
以下是两种Trigger的例子:
publicclassDiningService:QuartzJobObject
{
publicstringUserName{get;set;}
protectedoverridevoidExecuteInternal(JobExecutionContextcontext)
{
stringmsg=string.Format("{0}:回家吃饭时间,姓名:{1},下次吃饭时间{2}",
DateTime.Now,UserName,
context.NextFireTimeUtc.Value.ToLocalTime());
Console.WriteLine(msg);
}
}
<objectname="DiningService"type="Spring.Scheduling.Quartz.JobDetailObject,Spring.Scheduling.Quartz">
<propertyname="JobType"value="QuartzNet.DiningService,QuartzNet"/>
<!--注入被调度的对象-->
<propertyname="JobDataAsMap">
<dictionary>
<entrykey="UserName"value="冬冬"/>
</dictionary>
</property>
</object>
<objectid="cronTrigger"type="Spring.Scheduling.Quartz.CronTriggerObject,Spring.Scheduling.Quartz">
<propertyname="jobDetail"ref="DiningService"/>
<!--每个5秒执行一次-->
<propertyname="cronExpressionString"value="0/5****?"/>
</object>
publicclassPersonService
{
publicstringUserName{get;set;}
publicvoidGoToBed()
{
Console.WriteLine("姓名{0}睡觉的时间是:{1}",UserName,DateTime.Now);
}
}
<!--注入的目标对象-->
<objectid="PersonService"type="QuartzNet.PersonService,QuartzNet">
<propertyname="UserName"value="刘冬"/>
</object>
<objectid="jobDetail"type="Spring.Scheduling.Quartz.MethodInvokingJobDetailFactoryObject,Spring.Scheduling.Quartz">
<!--不必继承IJob接口-->
<propertyname="TargetObject"ref="PersonService"/>
<propertyname="TargetMethod"value="GoToBed"/>
</object>
<objectid="jobDetailNonConcurrent"type="Spring.Scheduling.Quartz.MethodInvokingJobDetailFactoryObject,Spring.Scheduling.Quartz">
<propertyname="targetObject"ref="PersonService"/>
<propertyname="targetMethod"value="GoToBed"/>
<!--并发等待-->
<propertyname="concurrent"value="false"/>
</object>
<objectid="simpleTrigger"type="Spring.Scheduling.Quartz.SimpleTriggerObject,Spring.Scheduling.Quartz">
<propertyname="jobDetail"ref="jobDetail"/>
<!--从几秒开始-->
<propertyname="startDelay"value="0s"/>
<!--每隔5秒重复-->
<propertyname="repeatInterval"value="15s"/>
</object>
<objecttype="Spring.Scheduling.Quartz.SchedulerFactoryObject,Spring.Scheduling.Quartz">
<!--触发器-->
<propertyname="triggers">
<list>
<refobject="simpleTrigger"/>
<refobject="cronTrigger"/>
</list>
</property>
</object>
运行效果:
原文见:http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_QuartzNet.html
相关推荐
刘冬编写Spring.NET学习笔记25——整合Quartz.NET例子。 原文: http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_QuartzNet.html
quartz.net+TopShelf
调度器负责管理Quartz.NET应用运行时环境。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz.NET采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。这就是...
Quartz.net 任务调度数据库持久化和集群;持久化能保证实例重启后job不丢失、 集群能均衡服务器压力和解决单点问题
.NET Quartz 计划调度DEMO ,.NET Quartz 计划调度DEMO ,
任务调度的持久化功能,即新增修改删除之类的功能,这必须得要有的,不然都不知道后台都有什么作业在跑
Autofac.Extras.Quartz, Quartz.Net的Autofac集成 Autofac.Extras.Quartz用于 Quartz.Net的Autofac集成包。Autofac.Extras.Quartz 为每个石英作业创建嵌套的litefime作用域。 完成作业执行后释放嵌套作用域。这允许...
制定Quartz.NET调度计划,以及监控Quartz.NET以及Topshelf运行情况 应用场景:定时Job配置以及定时Job运行情况记录
Quartz.net-几十分钟后执行代码
Spring整合Quartz定时任务 在集群、分布式系统中的应用
spring3整合quartz1.8和spring3整合quartz2.2两个版本示例
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂...
Quartz.NET 官方源码及演示例子,官方下载地址:http://sourceforge.net/projects/quartznet/files/quartznet/
spring整合quartz文档
spring整合quartz定时任务调度..........
spring整合quartz使用jdbc存储任务,并配置为quartz集群应用
所需jar如下: spring-beans-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-expression-3.2.4.RELEASE....quartz-all-2.1.7.jar spring-tx-3.2.4.RELEASE.jar slf4j-log4j12-1.6.1.jar slf4j-api-1.6.1.jar
好像很多人整合出现了问题,所以抽个demo出来 是一个demo包含源码和lib 在tomcat下可以执行
自己做的一个quartz.net的例子 自己做的一个quartz.net的例子
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。 这个是quartz.net 2.0.1。 注意:从quartz.net 2.0开始,不支持.net 2.0,仅支持.net 3.5...