使用Quartz调度多个任务
2012-07-29 16:47
375 查看
1. 在Myeclipse中导入Quartz.jar包
2.创建两个任务,并配置各自的bean
a。。第一种直接派生QuartzJobBean
public class Report extends QuartzJobBean {
private String name;//通过setter注入值
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
static int i = 100;
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
System.out.println(name+i+" send to 总部 at " + new Date());
++i;
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
<!--在xml中将Report包装成JobDetaiBean -->
<bean name="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="hhj.quartz.Report"/>
<property name="jobDataAsMap">
<map>
<entry key="name" value="黄海金"/> <!-- 与实体中注入变量相同 -->
</map>
</property>
</bean>
b 。。。第二种完全用简单的POJO
public class ChecekDiskFreddSpace {
static int i=0;
public void check(){
System.out.println(i+" 检查完毕"+new Date());
++i;
}
}
<!-- (2)第二个任务 配置 第二种方法 完全用最简单的POJO实现 -->
<bean name="checkDiskFreddSpace" class="hhj.quartz.ChecekDiskFreddSpace"/>
<bean name="checkDiskJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="checkDiskFreddSpace"/>
<property name="targetMethod" value="check"/>
<!-- concurrent 指定这个checkDiskJob(多个同时执行)能否同时执行,默认为true。 -->
<property name="concurrent" value="false"/>
</bean>
3.给每个job定义各自的触发器(即Trigger Bean)
<!-- (3)前两个步骤定义了 两个任务,接下去定义触发器Trigger -->
<!-- a...定义第一个任务的执行周期 每周周一到周五中午12:00执行 第二种CronTriggerBean-->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean" >
<property name="jobDetail" ref="reportJob"/>
<!-- 每周周一到周五中午12:00执行 -->
<property name="cronExpression" value="0 0 12 ? * MON-FRI"/>
<!-- cronExpression表达式定义Job的执行规则。 -->
</bean>
<!-- b...定义第二个任务的执行周期 每隔10秒钟执行一次 第一种SimpeTrigerBean-->
<bean id="repeatTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="checkDiskJob"/>
<!-- 3S后启动 -->
<property name="startDelay" value="3000"/>
<!-- 每隔5秒检查一次 -->
<property name="repeatInterval" value="10000"/>
</bean>
4.启动定义好的JOB,在xml中配置一个Scheduler,然后将所有的触发器Trigger加入
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="repeatTrigger"/>
<ref bean="cronTrigger"/>
</list>
</property>
</bean>
2.创建两个任务,并配置各自的bean
a。。第一种直接派生QuartzJobBean
public class Report extends QuartzJobBean {
private String name;//通过setter注入值
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
static int i = 100;
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
System.out.println(name+i+" send to 总部 at " + new Date());
++i;
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
<!--在xml中将Report包装成JobDetaiBean -->
<bean name="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="hhj.quartz.Report"/>
<property name="jobDataAsMap">
<map>
<entry key="name" value="黄海金"/> <!-- 与实体中注入变量相同 -->
</map>
</property>
</bean>
b 。。。第二种完全用简单的POJO
public class ChecekDiskFreddSpace {
static int i=0;
public void check(){
System.out.println(i+" 检查完毕"+new Date());
++i;
}
}
<!-- (2)第二个任务 配置 第二种方法 完全用最简单的POJO实现 -->
<bean name="checkDiskFreddSpace" class="hhj.quartz.ChecekDiskFreddSpace"/>
<bean name="checkDiskJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="checkDiskFreddSpace"/>
<property name="targetMethod" value="check"/>
<!-- concurrent 指定这个checkDiskJob(多个同时执行)能否同时执行,默认为true。 -->
<property name="concurrent" value="false"/>
</bean>
3.给每个job定义各自的触发器(即Trigger Bean)
<!-- (3)前两个步骤定义了 两个任务,接下去定义触发器Trigger -->
<!-- a...定义第一个任务的执行周期 每周周一到周五中午12:00执行 第二种CronTriggerBean-->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean" >
<property name="jobDetail" ref="reportJob"/>
<!-- 每周周一到周五中午12:00执行 -->
<property name="cronExpression" value="0 0 12 ? * MON-FRI"/>
<!-- cronExpression表达式定义Job的执行规则。 -->
</bean>
<!-- b...定义第二个任务的执行周期 每隔10秒钟执行一次 第一种SimpeTrigerBean-->
<bean id="repeatTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="checkDiskJob"/>
<!-- 3S后启动 -->
<property name="startDelay" value="3000"/>
<!-- 每隔5秒检查一次 -->
<property name="repeatInterval" value="10000"/>
</bean>
4.启动定义好的JOB,在xml中配置一个Scheduler,然后将所有的触发器Trigger加入
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="repeatTrigger"/>
<ref bean="cronTrigger"/>
</list>
</property>
</bean>
相关文章推荐
- [译]Java定时任务调度-Quartz文档(一)初步使用
- 在Spring中使用Quartz进行任务调度
- 在Spring中使用Quartz进行任务调度 (转:http://www.blogjava.net/Jay2009/archive/2009/03/25/259176.html)
- Java中Spring使用Quartz任务调度定时器
- Quartz任务调度基本使用
- 如何使用spring 定时调度 【 Spring+Quartz实现定时任务 】
- Quartz任务调度框架和Spring的整合使用
- 在Spring中使用Quartz进行任务调度(5)
- 使用Quartz进行作业任务调度
- quartz任务时间调度入门使用(一)
- 在Spring中使用Quartz进行任务调度
- ASP.NET使用Quartz.NET实现定时任务调度
- spring框架使用任务调度quartz的例子-TriggerListener 篇
- 在Spring中使用Quartz进行任务调度(6)
- 使用Spring来实现任务计划服务三:集成quartz任务调度框架
- quartz 任务时间调度入门使用
- (转)Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
- Quartz 2.x 任务调度使用(CronTrigger)
- quartz任务调度初次使用记录
- Quartz任务调度基本使用