您的位置:首页 > 编程语言 > Java开发

Spring + Quartz 响应定时任务简单案例

2017-07-21 12:12 281 查看
概述:需求微信token两个小时失效,所以需要一个定时任务去取最新的Token

1、需要引用jar 包

<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>

Spring framework相关jar包 和commons-logging.jar 

2、写一个执行的任务类

public class TakeWeiXinTokenQtz {

private static int counter = 0;
protected void execute() {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
long ms = System.currentTimeMillis();
System.out.println("\t\t" + sf.format(new Date(ms)));
System.out.println("(" + counter++ + ")");
}
}


总结:其实就是一个简单类

3、配置一个定时任务

它的思想就是基于工厂模式

类似一个工厂有很多需要自动触发的任务,而每个任务触发事件和时间不同,如何统一管理

它有总厂长, 分厂,车间主任,工人

对应quart就是

SchedulerFactoryBean
------》CronTriggerFactoryBean------》MethodInvokingJobDetailFactoryBean---》TakeWeiXinTokenQtz(你创建的bean)


SchedulerFactoryBean
:里面triggers ,可以触发一系列事情


CronTriggerFactoryBean: 表示什么事情?发生规则(时间相关的)

MethodInvokingJobDetailFactoryBean
:表示目标对象和目标的方法


TakeWeiXinTokenQtz:你就需要创建这样bean和execute(方法)、

<!-- 配置定时任务 -->
<bean id="takeWeiXinTokenQtz" class="com.rinlink.intelligent.weixin.task.TakeWeiXinTokenQtz"/>

<bean id="springQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean = "takeWeiXinTokenQtz"/>
</property>
<property name="targetMethod">
<value>execute</value>
</property>
</bean>

<!-- 调用触发器 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="springQtzJobMethod"/>
<!-- run every morning at 6 AM -->
<property name="cronExpression" value="*/5 * * * * ?"/>
</bean>
<!-- 调度工厂 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
</bean>cronExpression :就是配置触发规则,这里是每5秒触发一次,可以自己百度一下很多的。

4、日志:

[org.quartz.core.JobRunShell] - Calling execute on job DEFAULT.springQtzJobMethod
[org.quartz.core.QuartzSchedulerThread] - batch acquisition of 1 triggers
2017-07-21 11:46:10
(1)
[org.quartz.core.QuartzSchedulerThread] - batch acquisition of 1 triggers
[org.quartz.core.JobRunShell] - Calling execute on job DEFAULT.springQtzJobMethod
2017-07-21 11:46:15
(2)

注意:web项目或者你要读取该配置文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: