我是靠谱客的博主 烂漫老鼠,最近开发中收集的这篇文章主要介绍Quartz 任务调度,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Quartz框架的介绍

Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间。其中quartz集群通过故障切换和负载平衡的功能,能给调度器带来高可用性和伸缩性。主要用来执行定时任务,如:定时发送信息、定时生成报表等等。

1、Quartz使用

步骤:

  1. 添加依赖

  2. 编写任务类(你要什么?)

  3. 编写Spring整合Quartz配置

  4. 启动服务

实现:

1、使用Spring整合Quartz:

 <!--定时任务 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>

2、编写任务类

package cn.it.web.task;
import java.text.SimpleDateFormat;
import java.util.Date;
//自定义的一个任务类, 任务类任务是输出当前的系统时间
public class MyTask {
public void showtime(){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前的时间:"+ dateFormat.format(new Date()));
}
}

3、在web.xml配置启动spirng

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!--启动spring-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>

4、编写Spring整合Quartz配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--1. 定义任务的详情(你要干什么)-->
<!--创建任务类对象-->
<bean id="myTask" class="cn.itcast.web.task.MyTask"/>
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!--任务对象-->
<property name="targetObject"
ref="myTask"/>
<!--任务的方法-->
<property name="targetMethod" value="showTime"/>
</bean>
<!--2. 定义触发器(什么时间出发上面的事情)-->
<bean id="trigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean" >
<!--任务详情-->
<property name="jobDetail" ref="jobDetail"/>
<!--时间表达式 : 秒
分 时 日 月 周 [年]
注意:
1.周与日是冲突的,只能写一个。
1(日)
1
1(周) 2021 , 不能指定的值使用?表示
2.年是可以省略不写的。
需求: 每两秒执行一次当前系统时间
-->
<property name="cronExpression" value="0/2 * * * * ? *"/>
</bean>
<!--3. 把触发器交给任务调度工厂-->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<array>
<ref bean="trigger"/>
</array>
</property>
</bean>
</beans>

5、启动服务

2、Quartz 任务调度表达式语法

语法

特殊符号的含义

 

特殊字符意义
*匹配所有的值。如:*在分钟的字段域里表示 每分钟 每
?只在日期域和星期域中使用。它被用来指定“非明确的值”
-指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”
,指定几个可选值。如:“MON,WED,FRI”在星期域里表示“星期一、星期三、星期五”
/指定增量。如:“0/15”在秒域意思是每分钟的0,15,30和45秒。 “5/15”在分钟域表示每小时的5,20,35和50。

Quartz Cron 表达式支持到七个域

日与周,必须有一个问号。否则就会有冲突。

月份和星期的名称是不区分大小写的。FRI 和 fri 是一样的。

举例

表达式意义
"0 0 12 * *?" 每天中午12点触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 0/5 14,18* * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * *? " 在每天下午2点到下午2:05期间的每1分钟触

 

最后

以上就是烂漫老鼠为你收集整理的Quartz 任务调度的全部内容,希望文章能够帮你解决Quartz 任务调度所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部