Spring.Scheduling.Quartz 作业的应用(定时任务和循环触发任务)
.定时任务的实现,比如有个任务是要晚上2点10分的时候要去触发的,先定义这个任务类RskBookFilterInitDiningService.cs,这里其实有两种实现,一种是需要继承QuartzJobObject任务类的,比如下面这个,还有一种直接指定执行某个service的某个方法,先说第一种
namespace Bll.ExtFunc
{
public class RskBookFilterInitDiningService : QuartzJobObject
{
public string UserName { get; set; }
private Spring.Context.IApplicationContext _ctx;
protected Spring.Context.IApplicationContext ctx
{
get
{
if (_ctx == null)
_ctx = Spring.Context.Support.ContextRegistry.GetContext();
return _ctx;
}
}
private IRskBookIFlterInitService _rskBookFilterInitService;
public IRskBookIFlterInitService RskBookFilterInitService
{
get
{
if (_rskBookFilterInitService == null)
{
_rskBookFilterInitService = (IRskBookIFlterInitService)ctx["RskBookFilterInitService"];
}
return _rskBookFilterInitService;
}
}
protected override void ExecuteInternal(JobExecutionContext context)
{
//定时任务每天晚上2点左右执行,全量执行
RskBookFilterInitService.SaveAutoInitAll();
}
} }
.需要继承QuartzJobObject的配置文件
.1任务分发配置,JobType 执行任务的类型定义描述
<object name="Dining" type="Spring.Scheduling.Quartz.JobDetailObject, Spring.Scheduling.Quartz">
<!--RskBookFilter全量初始化-->
<property name="JobType" value="Bll.ExtFunc.RskBookFilterInitDiningService, RSKBLL"/>
<!-- 注入被调度的对象 -->
<property name="JobDataAsMap">
<dictionary>
<entry key="UserName" value="admin"/>
</dictionary>
</property>
</object>
2.2 任务分发好了,接下就是选择触发器的触发类型了,这里是CronTriggerObject的实现,每天晚上2点10分启动任务
<object id="cronTrigger" type="Spring.Scheduling.Quartz.CronTriggerObject, Spring.Scheduling.Quartz">
<property name="jobDetail" ref="Dining"/>
<!--晚上2:10分的时候自己启动RskBookFilterInitDiningService这个服务 全量初始化-->
<property name="cronExpressionString" value="0 10 2 * * ?"/>
</object>
2.3 触发器的装载
<object type="Spring.Scheduling.Quartz.SchedulerFactoryObject, Spring.Scheduling.Quartz">
<!--触发器-->
<property name="triggers">
<list>
<ref object="cronTrigger"/>
</list>
</property>
</object> 好了接下来说另外一种timer,可以指定程序启动多久后开始执行startDelay,还有执行间隔repeatInterval,如我下面演示的会在程序启动120s后,自己启动,每隔10800s也就是每隔3小时循环执行 不说了上配置文件
.配置文件
3.1 不需继承,可直接指定执行任务的service,以及执行哪个方法
<object id="jobDetail" type="Spring.Scheduling.Quartz.MethodInvokingJobDetailFactoryObject, Spring.Scheduling.Quartz">
<!-- 不必继承IJob接口 -->
<property name="TargetObject" ref="RskBookFilterInitService"/>
<!--RskBookFilter增量初始化-->
<property name="TargetMethod" value="SaveAutoInitIncrement"/>
</object> <object id="jobDetailNonConcurrent" type="Spring.Scheduling.Quartz.MethodInvokingJobDetailFactoryObject, Spring.Scheduling.Quartz">
<property name="targetObject" ref="RskBookFilterInitService"/>
<property name="targetMethod" value="SaveAutoInitIncrement"/>
<!-- 并发等待 -->
<property name="concurrent" value="false"/>
</object>
3.2 定义触发类型
<object id="simpleTrigger" type="Spring.Scheduling.Quartz.SimpleTriggerObject, Spring.Scheduling.Quartz">
<property name="jobDetail" ref="jobDetail"/>
<!-- 120s后启动 -->
<property name="startDelay" value="120s"/>
<!-- 每3个小时更新一次 增量初始化-->
<property name="repeatInterval" value="10800s"/>
</object>
3.3 装载触发器,可以装载多个触发器
<object type="Spring.Scheduling.Quartz.SchedulerFactoryObject, Spring.Scheduling.Quartz">
<!--触发器-->
<property name="triggers">
<list>
<ref object="simpleTrigger"/>
<ref object="cronTrigger"/>
</list>
</property>
</object>
Spring.Scheduling.Quartz 作业的应用(定时任务和循环触发任务)的更多相关文章
- java定时任务以及Spring使用Quartz调度器执行定时任务
		
java下的java.util.Timer中类可以实现定时执行任务的执行: 如:让任务立即执行,每隔1s循环执行一次 public class TimerClass { public static v ...
 - Spring.Scheduling.Quartz的使用
		
最近因使用Spring.Net框架而接触.了解到其与Quartz.Net的集成,即Spring.Scheduling.Quartz模块. Spring通过对Quartz.Net的封装,采用了sprin ...
 - 使用spring+quartz配置多个定时任务
		
Spring被用在了越来越多的项目中, quartz也被公认为是比较好用的定时器设置工具, 在这里通过一个demo说明如何使用spring和quartz配置多个定时任务. 环境: eclipse + ...
 - Quartz学习总结(1)——Spring集成Quartz框架
		
一.Quartz简介 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简 ...
 - 使用Spring整合Quartz轻松完成定时任务
		
一.背景 上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等. 二.开发环境及必 ...
 - Spring整合Quartz轻松完成定时任务
		
一.背景 上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等. 二.开发环境及必 ...
 - (2)Spring集成Quartz定时任务框架介绍和Cron表达式详解
		
在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但 ...
 - Spring集成Quartz定时任务框架介绍和Cron表达式详解
		
原文地址:http://www.cnblogs.com/obullxl/archive/2011/07/10/spring-quartz-cron-integration.html 在JavaEE系统 ...
 - spring整合quartz实现定时任务
		
需求:spring+mybatis框架已经搭建好,需要实现一个定时任务. 一:导出相应的jar包 quartz-all-1.6.5.jar获取quartz-alll-1.6.6.jar spring- ...
 
随机推荐
- XML.03-DOM和SAX解析
			
body,td { font-family: calibri; font-size: 10pt } XML.03-DOM和SAX解析 XML的DOM解析 解析 处理 回写 XML的SAX解析 SAX和 ...
 - SQL Server 的数据表简单操作
			
--创建数据表--[use 要创建数据表的数据库名称go]create table 要创建的表名(字段名 数据类型[长度] [null | not null] [primary key],... .. ...
 - 学习C:打印输入中单词长度的水平方向直方图
			
#include <stdio.h>#define IN 1#define OUT 0#define MAXWL 16 main() { /*打印输入单词长度的水平直方图*/ int c, ...
 - 介绍一款非常适合做微网站并且免费的CMS系统
			
在微网站火热的今天,寻找一款具备 web app功能的CMS系统能够大大提高我们的工作效率,eBSite升级到3.0后,开始支持web app 皮肤,也就是创建一个站点,会同时绑定一个PC版皮肤与一个 ...
 - Listbox简单用法
			
<ListBox x:Name="ListBoxPatientAllergy" Grid.Row="1" ItemContainerStyle=" ...
 - urllib.urlretrieve的用法
			
urllib.urlretrieve(url, local, cbk) urllib.urlretrieve(p,'photo/%s.jpg'%p.split('/')[-4]) url要下载的网站 ...
 - asp.net Ajax和web services
			
新建一个web服务 using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
 - NTKO控件在阅读PDF时,显示DEMO的问题
			
NTKO控件在阅读PDF时,显示DEMO的问题, 原因是加载了以前的DEMO版本的控件.解决办法是: 在命令行中执行命令: regsvr32 /u NtkoOleDocAll.DLL 卸载老版本的控件 ...
 - Struts框架——(三)动态ActionForm
			
一.DynaActionForm的引入意义 使用ActionForm把表单数据单独封装起来,而且提供了自动的数据验证,简化了代码的编写,给我们带来了极大的方便. 但是,ActionForm也存在一些明 ...
 - 转发(forward)和重定向(sendRedirect)
			
一. RequestDispatche 是一个Web资源的包装器,可以用来把当前的Request传递给该资源,或者把新的资源包括到当前的相应中.详细来说:RequestDispatch对象从客户端获取 ...