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
Spring.NET是针对.NET平台的一个开源企业级应用框架,它借鉴了Java界的Spring框架,并将其精髓移植到了.NET环境中。本参考文档以全中文的形式提供,涵盖了从基础到高级的Spring.NET使用教程,共计31章,内容全面且...
Spring.NET是中国开源社区基于.NET Framework实现的一个轻量级企业级应用框架,它为.NET开发者提供了与Java Spring类似的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)...
通过查看项目源代码,你可以学习到更多关于Quartz.NET实际应用的细节。 总之,Quartz.NET是一个功能强大的.NET定时任务框架,能够满足各种复杂的定时需求。通过学习和实践这个"Quartz.net-定时任务 Demo",你将能够...
10. **企业服务**:Spring.NET还提供了对JMS、WCF、Quartz作业调度等企业级服务的支持,进一步完善了.NET应用程序的构建。 通过"Spring.NET框架Document_CN",开发者可以全面了解和掌握Spring.NET的使用方法,包括...
Quartz.NET则是一个开源的作业调度库,适用于.NET平台,能够帮助开发者在.NET应用中实现复杂的时间驱动任务。结合使用Quartz.NET和TopShelf,我们可以构建一个在Windows服务中运行的定时任务调度系统。 Quartz.NET...
这样,即使应用程序或服务器崩溃,一旦系统恢复,Quartz.NET能够从数据库中读取这些信息并重新安排未完成的任务。 实现数据库持久化,首先需要配置Quartz.NET的JobStore。常见的JobStore类型有SQLServerJobStore、...
调度器负责管理Quartz.NET应用运行时环境。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz.NET采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。这就是...
此外,Quartz.NET还支持持久化,这意味着即使应用程序关闭,已调度的作业和触发器信息也能保存下来,当应用程序重新启动时,可以恢复之前的调度状态。这通常通过数据库存储实现,例如SQL Server、MySQL或者SQLite等...
Quartz.NET 是一个开源的作业调度框架,它允许开发者在.NET环境中定义和执行定时任务。这个框架的强大之处在于它的灵活性和可扩展性,使得开发者能够创建复杂的调度逻辑,以满足各种自动化需求。以下是对Quartz.NET...
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂...
通过查看源码,我们可以学习如何配置 Spring 和 Quartz,如何定义 Job 和 Trigger,以及如何在 Tomcat 下部署和运行应用。 7. **最佳实践**:为了优化性能和可维护性,推荐将 Quartz 的配置和作业定义分离,使得...
通过运行这个Demo,你可以学习如何在自己的应用中集成Quartz.NET,实现定时任务。 总的来说,Quartz.NET结合C#的强大功能,为.NET开发者提供了一个强大且灵活的定时任务解决方案。无论是简单的数据库同步、邮件发送...
任务调度的持久化功能,即新增修改删除之类的功能,这必须得要有的,不然都不知道后台都有什么作业在跑
总之,这个压缩包提供了Quartz.NET 2.3.1的完整源代码和丰富的示例,对于学习和开发基于.NET的定时任务系统非常有价值。无论是初学者还是有经验的开发者,都能从中获益,理解如何利用Quartz.NET来提升应用程序的自动...
Autofac.Extras.Quartz, Quartz.Net的Autofac集成 Autofac.Extras.Quartz用于 Quartz.Net的Autofac集成包。Autofac.Extras.Quartz 为每个石英作业创建嵌套的litefime作用域。 完成作业执行后释放嵌套作用域。这允许...
这个"Quartz.NET-2.1.2_DLL文件.rar"压缩包包含了Quartz.NET的2.1.2版本的DLL文件,这是一个关键组件,允许开发者在他们的.NET应用程序中集成定时任务功能。 Quartz.NET的核心功能是它提供了强大的调度能力。开发...
**Spring集群整合Quartz** 在现代企业级应用中,定时任务是不可或缺的一部分,它用于执行周期性的后台任务,如数据同步、报表生成等。Spring框架是Java开发中的主流选择,而Quartz则是一个强大的任务调度库,能实现...
Quartz和Spring Batch是两种非常重要的Java开源框架,它们在企业级应用开发中扮演着重要角色。Quartz主要用于任务调度,而Spring Batch则专注于批量处理。在这个“quartz_springbatch_dynamic”项目中,我们将看到...