使用定时任务

5.1 作业调度介绍

定时任务的专业说法叫做作业调度,概 念 如 下
A job scheduler is a computer application for controlling unattended background

program execution of jobs.(作业调度是用于控制作业执行的后台程序)通过使用作业调度可以帮助我们完成,邮件定时发送、报表定时统计、数据采集等工作

matrix 集成 quartz 定时任务框架,可以在 Matrix 中直接使用 quartz。在使用 quartz 之前我们要了解一下几个基本的概念

• 触发器顾名思义,触发器是用来触发作业执行的,作业被安排在一个给定的时间触发时运行,

如 3 秒后执行一次,或者周期性的触发作业执行如每周 5 执行一次,在 quartz 中【SimpleTrigger】负责给定时间触发【CronTrigger】负责周期性触发。

• 作业
作业就是我们需要执行业务逻辑的地方,它通过实现简单的作业接口 Job[ void

execute(execute) ],来实现被调度器调用。• 调度器

Scheduler 调度器用来管理 trigger 和 job,当 triiger 满足触发条件时,就调用 trigger 对应的 job,执行 job 的 excuter 方法

• 作业持久化
通过使用内置的 JDBCJobStore,所有的作业和触发器配置都存储在 JDBC 关系数据库中,当任务中断或者容器重启时任务可以恢复继续执行。
了解更多请查看 quartz 官网 http://www.quartz-scheduler.org/

5.2 创建定时任务

1、 在 matrix 中使用定时任务是非常方便的首先我们需要执行初始化数据库脚本/demo-web/src/main/resources/db/init/db_03_quartzx.sql 创建 quartz 依赖的数据库表。

2、 创建一个 job 类

 

/**
* 定时任务演示 */
public class SimpleJob extends QuartzJobBean { @Override
protected void executeInternal(JobExecutionContext context) { LogUtil.info("当前时间是:" + new Date().toLocaleString());
} }

 

3、 在配置文件中配置触发器,/demo-web/src/main/resources/config/core/spring-quartz-context.xml

<bean id="JobDetail1" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
 <!—-对应我们的 job 类 -->
<property name="jobClass" value="com.zkingsoft.quartz.SimpleJob" /> <!-- 必填项:在此处定义job detail -->
<property name="name" value="jobName1"></property> <!-- 必填项:在此处定义job name jobName不要重复-->
<property name="group" value="jobGroupName1"></property> <!-- 必填项:在此处定义job group name -->
<property name="durability" value="true" /> <!-- 选填项:设置该job是持久性的 -->
<property name="requestsRecovery" value="true" /> <!-- 选填项:设置该job是中断后可恢复的 -->
</bean>
<bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="name" value="triggerName1" />
<!-- 必填项:在此处定义trigger name -->
<property name="group" value="triggerGroupName1" />
bean
<!-- 必填项:在此处定义trigger group name --> <property name="jobDetail" ref="JobDetail1" />
<!-- 0/10 * * * * ? 这是一个corn表达式 表示10秒执行一次 -->
<property name="cronExpression" value="0/10 * * * * ? " />
<!-- 必填项:在此处定义定时任务时间 -->
<property name="timeZone" ref="timeZone" />
<!-- 选填项:在此处定义时区 -->
<property name="misfireInstruction" value="1" />
</bean>

0/10 * * * * ? corn 表达式可能是比较难以编写的,这里给大家提供一个在线时长 corn 表达式的网站 http://cron.qqe2.com/
4、 在 spring-mvc-context.xml 配置文件中导入
<import resource="spring-quartz-context.xml" /> 启动 web 项目即可运行定时任务。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值