您的位置:首页 > 其它

使用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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: