关于quartz调度器

来源:互联网 发布:电信短信平台软件 编辑:程序博客网 时间:2024/06/05 19:41


关于调度器:
主要作用:按照一定时间规律,或者到指定的时间来执行一些特殊的操作


主要:
org.springframework.scheduling.quartz.QuartzJobBean


来源于:
spring-context-support-4.2.0.RELEASE


编写调度器
参考网站:http://www.cnblogs.com/mguo/archive/2013/01/16/2862921.html,不过这里使用的版本有点低,我们采用的比较新的Quartz2.2有的地方需要改一下


---------------------------------------------------------------------------------


方式一:
public class job1 extends QuartzJobBean---继承这个类
//在这个类中实现主要的方法
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { 
// TODO Auto-generated method stub
System.out.println("继承QuartzJobBean的方式-调度" + ++i + "进行中...");
}
类里边就结束了
配置applicationContext.xml文件
<!-- 测试调度器配置 -->
<!-- .配置作业类 -->
<bean name="quartz1" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.wode.other.MyQuartz" />
<!-- 可以传递参数 -->
<property name="jobDataMap">
<map>
<entry key="testName" value="zhangsan" />
</map>
</property>
</bean>

<!--触发方式 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="quartz1" />
<!--这种类型更加灵活,允许你针对特定实例选择计划方案以及将来要执行的频率。-->
<!-- "cronExpression"的配置说明 字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 ,- * / 
小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 
或者 SUN-SAT , - * ? / L C # 年(可选) 留空, 1970-2099 , - * / - 区间 * 通配符 ? 你不想设置那个字段 -->


<!-- 每分钟的第0,10,20,30,40,50秒调度一次 -->
<property name="cronExpression" value="0,10,20,30,40,50 * * * * ?" />
</bean>




<!-- 配置调度工厂 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
</bean>


基于继承的配置完成。参考调度器01




---------------------------------------------------------------------------------




方式2:基于不继承的方式
就是一个普通类
public class MyQuartz2 {
private static int i = 0;
public void myJob(){
System.out.println("不继承QuartzJobBean方式-调度" + ++i + "进行中...");
}
}




配置文件做一个修改
<!-- 测试调度器配置 -->
<bean id="quartz2"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<bean class="com.wode.other.MyQuartz2" />
</property>
<property name="targetMethod" value="myJob" />
<property name="concurrent" value="false" /><!-- 作业不并发调度 -->
</bean>


<bean id="simpleTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<!--你可以定义作业的启动时间、触发器之间的延迟时间以及 repeatInterval(频率)。-->
<property name="jobDetail" ref="quartz2" />
<property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 -->
<property name="repeatInterval" value="2000" /><!-- 每2秒调度一次 -->
</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="simpleTrigger" />
</list>
</property>
</bean>




参考调度器02




---------------------------------------------------------------------------------
原创粉丝点击