spring定时器时间配置

Spring定时器Quartz的使用

时间秒杀一切 提交于 2020-02-15 05:41:14
  spring集成了quartz,它 允许开发人员根据时间间隔(或天)来调度作业,只需要简单的配置,就可以实现定时任务,代码耦合低。   项目中quartz依赖的jar:org.springframework.context.support-3.0.5.RELEASE.jar 和 quartz-all-1.8.6.jar。   配置代码:    1 <!-- 定时任务 开始 --> 2 <!-- 要调用的工作类1 --> 3 <bean id="queryOvertime" class=""></bean> 4 <!-- 定义调用对象和调用对象的方法--> 5 <bean id="queryOvertimeQuartzJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 6 <!-- 调用的类 --> 7 <property name="targetObject"> 8 <ref bean="queryOvertime" /> 9 </property> 10 <!-- 调用类中的方法 --> 11 <property name="targetMethod"> 12 <value>queryOvertime</value> 13 </property> 14 <

Spring整合Quartz实现动态定时器,相关api,定时器添加,删除,修改

独自空忆成欢 提交于 2020-01-24 17:48:03
一、版本说明 spring3.1以下的版本必须使用quartz1.x系列,3.1以上的版本才支持quartz 2.x,不然会出错。 原因:spring对于quartz的支持实现,org.springframework.scheduling.quartz.CronTriggerBean继承了org.quartz.CronTrigger,在quartz1.x系列中org.quartz.CronTrigger是个类,而在quartz2.x系列中org.quartz.CronTrigger变成了接口,从而造成无法用spring的方式配置quartz的触发器(trigger) 此示例所选版本:spring版本号3.0.7.RELEASE,quartz版本1.8.6 二、添加jar包 我的是maven工程,pom.xml相关配置如下: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>3.0.7.RELEASE</spring.version> <quartz.version>1.8.6</quartz.version> </properties>      <dependency> <groupId>org.springframework<

Spring4定时器 cronTrigger和simpleTrigger实现方法

◇◆丶佛笑我妖孽 提交于 2019-12-20 09:46:47
spring4定时器 cronTrigger和simpleTrigger实现方法 Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。 SimpleTrigger 当需要在规定的时间执行一次或在规定的时间段以一定的时间间隔重复触发执行Job时,SimpleTrigger就可以满足要求;SimpleTrigger的属性有:开始时间、结束时间、重复次数和重复的时间间隔,重复次数属性的值可以为0、正整数、或常量 SimpleTrigger.REPEAT_INDEFINITELY,重复的时间间隔属性值必须为0或长整型的正整数,以毫秒作为时间单位,当重复的时 间间隔为0时,意味着与Trigger同时触发执行(或几乎与Scheduler开始时同时触发执行)。如果有指定结束时间属性值,则结束时间属性优先于重复次数属性,这样的好处在于:当我们需要创建一个每间隔10秒钟触发一次直到指定的结束时间的 Trigger,而无需去计算从开始到结束的所重复的次数,我们只需简单的指定结束时间和使用REPEAT_INDEFINITELY作为重复次数的属性

springMVC框架配置定时器

心已入冬 提交于 2019-12-08 14:00:34
在springmvc.xml添加如下内容 在xmlns中添加 xmlns:task="http://www.springframework.org/schema/task" 1 在xsi中添加 http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd 1 2 在中间添加 <!-- 设置定时任务 --> <task:annotation-driven/> 1 2 新建TimerTask类 ,该类需要放在springMVC注解的框架下。 代码如下: import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** * * 类名称:TimerTask * 类描述:定时器任务 * */ @Component public class TimerTask { /** * 每天22点30启动任务 */ @Scheduled(cron = "0 30 22 ? * *") public void test1() { System.out.println("job1 开始执行..."

Timer定时器

断了今生、忘了曾经 提交于 2019-12-03 17:00:20
Timer 定时器+ mybatis 建立3个类:TimerManager 类(定时器的启动和定时执行); XXXTimerTask 类(定时任务类,即定时执行的服务); XXXTimeTaskListener类(定时器的监听器)。 1.TimerManager类 该类主要负责定时器的启动和执行。其中,PERIOD_DAY属性为定时任务的执行时间间隔(毫秒数)。我这里定的是2个小时。具体的方法中,先定义定时器第一次执行任务的时间,即下图中的date,然后new一个Timer(定时器)和TimerTask(定时任务),最后利用定时器的schedule方法,将定时任务、第一次执行时间和任务执行时间间隔传入定时器中。 其中要注意的一点,当项目启动时,启动时间若早于当日定时器第一次执行时间(下图中的date),定时任务不会立刻执行。 1 2 3 import java.util.Calendar; 4 import java.util.Date; 5 import java.util.Timer; 6 7 /* 8 * Service :需要定时器重复执行的服务 9 */ 10 public class TimerManager { 11 //时间间隔 12 private static final long PERIOD_DAY = 2 * 60 * 60 * 1000; 13 14

定时器(Quartz)快速入门

穿精又带淫゛_ 提交于 2019-12-01 17:25:16
摘要: Quartz是一个任务日程管理系统,这个系统可以与任何其他软件系统集成或者一起使用。术语“日程进度管理器”可能对于不同的人有不同的理解。当你阅读这个指南之后, 你会对这个术语有固定的理解。简而言之,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。 Quartz概述 Quartz中的触发器 Quartz中提供了两种触发器,分别是CronTrigger和SimpleTrigger。 SimpleTrigger 每 隔若干毫秒来触发纳入进度的任务。因此,对于夏令时来说,根本不需要做任何特殊的处理来“保持进度”。它只是简单地保持每隔若干毫秒来触发一次,无论你的 SimpleTrigger每隔10秒触发一次还是每隔15分钟触发一次,还是每隔24小时触发一次。 CronTrigger 在特定“格林日历”时刻触发纳入进程的任务,因此,如果创建一个在每天上午10点触发的触发器,那么,在夏令时执行之前,系统将继续如此运作。但是,取决于是 春季还是秋季夏令时,因为对于特定的星期日,从星期六上午10点到星期日上午10点之间的时间间隔将不是24小时,而可能是23或者25个小时。 总之,如果你记住下面的两条规则,则会感觉良好并且很容易记忆: • SimpleTrigger 总是每隔若干秒触发,而同夏令时没有关系。 • CronTrigger

基于spring+quartz开发定时器

你说的曾经没有我的故事 提交于 2019-11-30 12:30:38
基于spring+quartz开发定时器 1、 准备Jar包 在Spring所有包齐全的前提下还要导入一个定时器工具包:quartz-1.6.2.jar < http://www.opensymphony.com/quartz/download.action > 2、 开发定时器类 ,实例代码如下: 1 public class TriggerUtil { 2 3 private TriggerUtil() { 4 5 } 6 7 public void expDataBase() { 8 System.out.println( " trigger actived .. " ); 9 } 10 11 } 3、 配置定时任务 为了清晰代码结构,单独建立一个配置定时任务的配置文件context-trigger.xml,并在applicationContext.xml进行import: < import resource ="context-trigger.xml" /> context-trigger.xml内容如下: 1 <? xml version="1.0" encoding="UTF-8" ?> 2 < beans 3 xmlns ="http://www.springframework.org/schema/beans" 4 xmlns:xsi ="http://www.w3

关于Spring定时任务(定时器)用法

﹥>﹥吖頭↗ 提交于 2019-11-29 23:34:14
Spring定时任务的几种实现 博客分类: spring框架 quartz spring spring-task 定时任务 注解 Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合 spring框架来介绍。 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做详细介绍。 使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,稍后会详细介绍。 Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,稍后会介绍。 从作业类的继承方式来讲,可以分为两类: 作业类需要继承自特定的作业类基类,如Quartz中需要继承自org.springframework.scheduling.quartz.QuartzJobBean;java.util.Timer中需要继承自java.util

SpringBoot定时器:@Scheduled

邮差的信 提交于 2019-11-29 06:13:29
  Spring Boot中定时器的配置使用是非常简单的。   假设已经搭建好了一个SpringBoot应用程序。只需要两步。 1、在Application中添加注解@EnableScheduling,我的Application代码如下: package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } 2、编写定时器工具类,下面我提供一下我的示例: package com.example.demo.mapper; import org.springframework.beans.factory

spring定时器任务多任务串行执行问题排查

情到浓时终转凉″ 提交于 2019-11-28 02:49:11
最近发现个生产问题,定时器任务某些任务没有及时执行。经过研究排查发现spring 定时器任务scheduled-tasks默认配置是单线程串行执行的,这就造成了若某个任务执行时间过长,其他任务一直在排队,业务逻辑没有及时处理的问题。 如下是scheduled定义了3个任务。 <task:scheduled-tasks >   <task:scheduled ref="myTask1" method="run" cron="0 0/59 10-23 * * ?"/>   <task:scheduled ref="myTask2" method="run" cron="0/10 * * * * ?"/>   <task:scheduled ref="myTask3" method="run" cron="0/10 * * * * ?"/> </task:scheduled-tasks> 查看该任务17点的执行日志(task名字已修改) zgrep -e '2016-10-28 17:' channel-task.log.2016-10-28.log.gz | grep -e 'MyTask2' 2016-10-28 17:14:25,002 INFO [pool-8-thread-1 - ] task.AbstractTask - [TASK] start task >>