调度器的配置使用
org.springframework.context.support-3.0.5.RELEASE.jar
org.springframework.transaction-3.0.5.RELEASE.jar
application.xml的文件配置如下:
<bean id="casheTaskInfo" class="com.ifeng.sync.model.MyTaskInfo">
<property name="name" value="cacheClean"></property>
</bean>
<bean id="resendTaskInfo" class="com.ifeng.sync.model.MyTaskInfo">
<property name="name" value="resend"></property>
</bean>
<!--创建jobDetail 一个job任务 -->
<bean id="resendJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.ifeng.sync.timer.RetryJob" />
<property name="jobDataAsMap">
<map>
<entry key="taskInfo" value-ref="resendTaskInfo"></entry>
</map>
</property>
</bean>
<bean id="cacheCleanJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.ifeng.sync.timer.CacheCleanJob" />
<property name="jobDataAsMap">
<map>
<entry key="taskInfo" value-ref="casheTaskInfo"></entry>
</map>
</property>
</bean>
<bean id="retryTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="JobDetail" ref="resendJobDetail" />
<!-- repeat every 1 seconds -->
<property name="repeatInterval" value="1000" />
</bean>
<bean id="cacheCleanTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<- - 触发器的创建-->
<property name="JobDetail"ref="cacheCleanJobDetail" /> < - - <property name="repeatCount" value="-1" /> 重复执行次数为无穷次 或则不添加这个属性,
重复执行次数也是无穷次- - >
<property name="JobDetail" ref="cacheCleanJobDetail" />
<!-- repeat every 1seconds -->
<property name="repeatInterval" value="1000" />
</bean>
<bean id="myScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cacheCleanTrigger" />
</list>
</property>
</bean>
创建job类 继承 QuartzJobBean
如下:
public class CacheCleanJob extends QuartzJobBean{
protected void executeInternal(JobExecutionContext context) throws JobExecutionException{
System.out.println("this job is begin");
}
}
public class RetryJob extends QuartzJobBean{
protected void executeInternal(JobExecutionContext context) throws JobExecutionException{
System.out.println("this job is begin");
}
注意:Job 实现 implements StatefulJob 变成串行进程,当当前进程没有执行完是,其他进程不让执行。