-
定时任务配置
2019-08-07 10:40:21定时任务配置<!-- [秒] [分] [时] [日] [月] [年] --> <value>0 0/1 * * * ?</value> 0 0/1 * * * ? 每一分钟执行一次 0012**? 每天12点运行一次 0 1 12 * * ?: 每天12点的第1分钟执行...定时任务配置<!-- [秒] [分] [时] [日] [月] [年] -->
<value>0 0/1 * * * ?</value>
0 0/1 * * * ?每一分钟执行一次
0 0 12 * * ?
每天12点运行一次
0 1 12 * * ?:每天12点的第1分钟执行一次
0 0 * /1 * * ?:每一个整点开始执行一次,此后开始,每增加一个小时执行一次
0 0 12 /1 * * ?:
从每天的12点开始执行一次,此后,每经过一小时执行一次
0 0 8,9,10 * * ?每天 8点、9点、10点执行一次
-
定时任务_探究 Spring 的定时任务配置
2021-01-12 04:41:14作者 | 郭朝兴责编 | Elle...Scheduled是Spring支持的定时任务配置方式,可以用注解或者配置文件的方式进行配置。Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,它是一个开源的由OpenSymphon...作者 | 郭朝兴
责编 | Elle
最近在项目开发中进行了一些Spring定时任务的开发工作,在开发过程中对Spring定时任务的配置方式进行了一些研究,现在对各种配置方式进行一个总结。Scheduled是Spring支持的定时任务配置方式,可以用注解或者配置文件的方式进行配置。
Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,它是一个开源的由OpenSymphony维护的项目,开发者能够在Java EE,或单独的Java SE应用中使用它。无论是简单的任务调度,还是复杂的企业级应用,Quartz都能够很好地胜任。
Quartz支持CronTriggerBean,SimpleTriggerBean两种模式,CronTriggerBean比 SimpleTriggerBean功能更强大,它能够控制任务执行的精确时间,比如,早上九点半需要执行某QuartzJobBean中给定的任务。
以下对不同的配置方式分别进行介绍。
通Scheduled注解或者xml配置的方式添加定时任务
ref 是定时任务的类在 Spring中的beanName,method是要执行的方法,fixed-delay 是上一个调用完成后,再次调用的延时,fixed-rate 是 上一个调用开始后,再次调用的延时(不用等待上一次调用完成),cron 是表达式,表示在什么时候进行任务调度。
也可以采用注解的方式,在需要配置为定时任务的方法上添加@Scheduled(cron = "0 0 3 * * ?"),cron为定时任务表达式,cron表达式支持非常丰富的配置规则。
@Component(“taskJob”)
public class TaskJob { k
@Scheduled(cron = "0 0 3 * * ?")
public void job1 {
System.out.println(“任务进行中。。。”);
}
}配置任务执行的线程池信息。task:scheduler用来配置任务调度线程池大小,调度线程在被调度任务完成前不会空闲;task:executor用来配置任务执行器的具体参数,pool-size 可以指定执行线程池的初始大小、最大大小,queue-capacity配置等待执行任务的队列容量,reject-policy当等待队列爆了时的策略,分为丢弃、有任务执行器直接执行等方式。
CronTrigger配置方式
CronTrigger 支持比simpleTrigger更具体的调度,CronTrigger支持类似日历的重复间隔。CronTrigger 由MethodInvokingJobDetailFactoryBean、CronTriggerFactoryBean两个类支持。
MethodInvokingJobDetailFactoryBean配置需要定时执行的任务类和方法,targetObject为执行定时任务的bean,targetMethod为执行定时任务的bean中的方法。CronTriggerFactoryBean为定时任务的触发器,用来配置定时任务执行的时间表达式。
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">SimpleTigger配置方式
当需要在规定的时间执行一次或者以一定的时间间隔重复出发执行job时,SimpleTrigger 就可以满足要求。SimpleTrigger的属性有:开始时间、结束时间、重复次数、重复时间间隔。
如下示例:首先创建需要执行定时任务的bean,名字为quartzBean。然后配置该bean需要定时执行的方法。Concurrent参数用来配置是否同步执行。如果配置为true,则任务执行时,只有上次执行完成后,才可以进入下一次执行。
SimpleTriggerFactoryBean配置了触发器执行的策略,开始执行的延迟时间及执行的时间间隔。SchedulerFactoryBean用来管理任务计划,是任务的总的管理类。将lazy-init='false'那么容器启动就会执行调度程序。
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">300000">SimpleTrigger与CronTrigger高级应用场景
针对需要将定时任务配置为根据用户的实际运行需要,动态调整任务执行的计划,并准实时生效的情况。可以采用配置页面的方式由用户选择任务的执行计划,然后将各个任务的执行计划添加到数据库中。周期性的从数据库中读取定时任务信息,添加、更新、删除定时任务线程。
当Spring 启动时,就会创建schedulerManager作为总的管理类,由schedulerManager来管理所有的任务,schedulerManager在后台每隔一定的时间(配置)执行一次,来监测数据库中需要创建和更新的定时任务。
schedulerManager读取数据库中的定时任务(任务类、任务方法、执行时间),判断定时触发器中是否存在该任务,如果存在,比较数据库中的任务表达式(cron)是否与当前定时器中的时间一致,如果不一致,更新当前任务时间表达式。如果不存在该任务,将任务加入到定时器中。
此种方式创建任务也是基于MethodInvokingJobDetailFactoryBean,CronTriggerFactoryBean 两个类,但是创建方式为通过代码进行实例化,可以根据实际需要动态的创建,灵活性更加强,使用起来也更加的方便,创建任务有2个步骤,具体如下:
(1)实例化任务
首先实例化MethodInvokingJobDetailFactoryBean,MethodInvokingJobDetailFactoryBean是spring自带的,并将数据库中配置的job相关信息添加到mijdfb,然后调用afterPropertiesSet方法,这个方法会实例化一个JobDetailImpl,并将相应的信息添加到JobDetailImpl中。该过程实例化了需要定时调度的类和方法,并可以向类和方法中传入制定的参数,使用配置文件的方式无法达到对应的效果。
MethodInvokingJobDetailFactoryBean mijdfb=new MethodInvokingJobDetailFactoryBean;
mijdfb.setName(qm.getEnvId);
mijdfb.setTargetObject(beanFactory.getBean("service -
linux 定时任务配置
2020-12-10 19:32:00linux 定时任务配置 linux的定时的配置文件的路径/var/spool/cron/。 这个下面一般会存放一些以用户名为文件名的定时器配置文件,功能不言而喻就是为不同的用户配置定时器。 root用户的定时任务配置文件是/var/...linux 定时任务配置
linux的定时的配置文件的路径/var/spool/cron/。 这个下面一般会存放一些以用户名为文件名的定时器配置文件,功能不言而喻就是为不同的用户配置定时器。
root用户的定时任务配置文件是/var/spool/cron/root1 定时任务的基本操作
a、crontab -e : 修改 crontab 文件. 如果文件不存在会自动创建。
b、crontab -l : 显示 crontab 文件。
c、crontab -r : 删除 crontab 文件。
d、crontab -ir : 删除 crontab 文件前提醒用户。
2 cron文件定时表达式语法:分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
3.定时服务的操作/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
4. Crontab使用实例1.每天 02:00 执行任务
0 2 * * * /bin/sh backup.sh2.每天 5:00和17:00执行任务
0 5,17 * * * /scripts/script.sh3.每分钟执行一次任务
* * * * * /scripts/script.sh4.每周日 17:00 执行任务
0 17 * * sun /scripts/script.sh5.每 10min 执行一次任务
*/10 * * * * /scripts/monitor.sh6.在特定的某几个月执行任务
* * * jan,may,aug * /script/script.sh7.在特定的某几天执行任务
0 17 * * sun,fri /script/scripy.sh
在每周五、周日的17点执行任务8.在某个月的第一个周日执行任务
0 2 * * sun [ $(date +%d) -le 07 ] && /script/script.sh9.每四个小时执行一个任务
0 */4 * * * /scripts/script.sh10.每周一、周日执行任务
0 4,17 * * sun,mon /scripts/script.sh11.每个30秒执行一次任务
我们没有办法直接通过上诉类似的例子去执行,因为最小的是1min。但是我们可以通过如下的方法。
* * * * * /scripts/script.sh
* * * * * sleep 30; /scripts/script.sh12.多个任务在一条命令中配置
* * * * * /scripts/script.sh; /scripts/scrit2.sh13.每年执行一次任务
@yearly /scripts/script.sh
@yearly 类似于“0 0 1 1 *”。它会在每年的第一分钟内执行,通常我们可以用这个发送新年的问候。14.系统重启时执行
@reboot /scripts/script.sh -
定时任务配置_一个简单的定时任务调度中心设计方案
2021-01-12 04:41:04在日常开发中除了给前端开发接口,还要写一些定时处理任务,比如...我们公司的微服务架构没有定时任务调度中心,每个服务通过类似crontab定时任务配置来管理自身的定时任务,为了保证每个服务高可用,我们给每个服务...在日常开发中除了给前端开发接口,还要写一些定时处理任务,比如一个活动需要每天定时给所有用户派发奖励。一个成熟服务框架需要一个全局的定时任务调度中心,通过定时任务调度中心可以查看服务有哪些定时任务以及定时任务的执行情况,对于执行失败的定时任务可以手动执行等。
我们公司的微服务架构没有定时任务调度中心,每个服务通过类似
crontab
定时任务配置来管理自身的定时任务,为了保证每个服务高可用,我们给每个服务都部署了两个节点,对于一些不能并发执行的定时任务我们往往需要给定时任务加一个分布式锁,有时甚至需要修改服务的crontab
定时任务配置,保证一组服务只一个服务能执行定时任务,对于定时任务执行情况没有一个统一地方可以查看,需要查看每个服务日志才能确认定时任务是否执行成功,对于执行失败的定时任务需要写额外的重做代码。所以我们需要一个定时任务调度中心来管理每个服务的定时任务,这个定时任务调度中心需要有以下功能:- 可以查看服务有哪些定时任务以及任务的执行状态。
- 对于执行失败的定时任务可以在管理界面手动发起重做。
- 每个定时任务都抽象成接口,由定时任务调度中心负责调度。
- 定时任务什么时候执行应由具体业务服务配置,定时任务调度中心可获取这些配置进行定时调度。
既然决定开发一个定时任务调度中心,那么问题来了,我们是否需要开发一个新的服务?我的答案是不需要,我们把定时任务当作服务接口,我们所有服务的接口信息都登记到服务注册中心,我们可以给接口添加一个定时任务标签,注册中心将打上定时任务标签的服务接口放到一个定时任务执行队列中,由定时任务执行队列管理每个服务定时任务接口的调度,同时将各个服务的定时任务接口与执行情况记录到数据库中,然后在注册中心添加一个定时任务管理页面来管理各个服务的定时任务。
定时任务调度中心的大致思路有了,剩下的过程就是将实现思路具体化。我们现有的定时任务配置与
crontab
类似,可以按分钟、小时、日期、月份、星期等几个维度进行配置,如果定时任务调度中心全部实现这几个维度的配置,会导致定时任务配置解析与调度逻辑变得复杂,一个框架因为简单才更加稳定可靠,我决定对定时任务配置维度进行简化处理,最终抽象出以下两类定时任务:- 每隔N秒执行一次的定时任务。
- 每天特定时间点执行的定时任务。
每个定时任务都可能执行多次,即每个定时任务可以有多条执行记录,所以可以在定时任务管理页面中查看每个定时任务的执行情况,但日常运维中我们不是很关心定时任务的历史执行情况,如果记录定时任务每次的执行情况,我们还要考虑如何管理历史执行记录以及历史执行记录太多了该如何处理,我不希望因为开发定时任务调度中心导致服务注册中心过于臃肿(定时任务调度中心当作服务注册中心的一个子模块来开发),所以我决定我们的定时任务调度中心只记录每个定时任务最近一次的执行记录。
对于日常运营活动中的定时任务,在活动结束时这些定时任务的生命周期也结束,这就要求业务服务的定时任务可以自动卸载,我们约定当定时任务生命周期结束时业务服务的定时任务接口应该返回
UNINSTALL
错误码,任务调度中心调用定时任务接口时如果接口返回UNINSTALL
错误码则将定时任务从任务调用队列中移除。根据以上思路,我们开发了一个足够简单稳定的定时任务调度中心。首先我们针对两种类型的定时任务添加以下两个注解,接口类的注解信息最终会上报的服务注册中心。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public static @interface TimerTask{ int value(); //每隔N秒执行一次(值为整形) } @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public static @interface DailyTask{ String value(); //每天特点时间点执行(如:09:00:00) }
我们希望添加一个名为
SendPrize
的定时任务,这个任务每天09:00:00执行一次,则我们只用给这个类添加DailyTask
注解就可以了,相关代码如下:@DailyTask("09:00:00") @WebAppPath("${classname}") public class SendPrize extends WebApp{ public void process(HttpRequest request, HttpResponse response) throws Exception{ response.setBody("hello world"); } }
定时任务调度中心的管理界面如下:
-
oracle定时任务配置
2019-07-11 16:42:00定时任务配置(给存过过程配置定时任务) (1)Schedules 下面配置了很多的作业计划,截图中所示,都不太规范。 如下图所示的作业计划就比较归档,做到了见名知意。如:S_D_00 每天凌晨执行 我们先在... -
SpringMVC定时任务配置
2019-09-08 13:31:20SpringMVC定时任务配置 在“springMVC-servlet.xml”配置文件中增加以下配置: 添加内容如下: xmlns:task="http://www.springframework.org/schema/task" http://www.springframework.org/schema/task ... -
boot定时任务开启和关闭 spring_探究 Spring 的定时任务配置
2020-12-26 15:27:07作者 |郭朝兴责编 |Elle出品 | CSDN(ID:CSDNnews)最近在项目开发中...Scheduled是Spring支持的定时任务配置方式,可以用注解或者配置文件的方式进行配置。Quartz是一个强大的企业级任务调度框架,Spring中继承并简化... -
quarz 定时任务配置手册
2012-12-26 23:43:28quarz 定时任务配置手册 操作手册 指导手册 -
springboot cron定时任务配置
2019-03-25 23:17:14在基础上增加cron定时任务配置。 开启定时任务 任务代码实现 开启定时任务 开启定时任务比较简单,在入口出打开**@EnableScheduling** @SpringBootApplication @MapperScan("com.hiro.demo.db") @EnableScheduling... -
kettle定时任务配置详细教程
2020-12-24 14:56:03在我们用kettle工具进行数据处理时,经常会因为定时任务而苦恼,并且kettle的转换流程无法进行定时任务配置,通常会将转换流程封装成一个工作流然后进行调度配置,虽然问题解决了,但是,工作的窗口不能被关闭,一直... -
spring静态定时任务配置
2018-02-02 14:01:56spring定时任务配置 1:导包,maven dependency> groupId>org.quartz-schedulergroupId> artifactId>quartzartifactId> version>1.8.5version> dependency> 2:引入定时任务配置文件 在web.xml中引入 ... -
spring定时任务配置详解.doc
2014-08-04 14:41:54spring定时任务配置详解实例 spting 定时器的配置实例 -
jeecg 定时任务配置用法
2017-11-01 17:21:001.定时任务配置文件 src/main/resources/spring-mvc-timeTask.xml 2.新定义一个定时任务举例 a.配置定时任务,配置文件spring-mvc-timeTask.xml <?xml version="1.0" encoding="UTF-8"?> <beans ... -
spring Scheduled定时任务配置
2018-11-02 17:42:23spring Scheduled定时任务配置原本感觉很简单,但是配置之后发现不生效,折腾了一小会才找到原因,将具体过程记录如下; 1修改spring-context.xml 在配置文件开头声明task <?xml version="1.0"... -
CentOS7定时任务配置与使用
2020-05-19 16:53:47原文链接: CentOS7定时任务配置与使用 -
Springboot定时任务配置及遇到的问题
2018-09-03 13:59:01SpringBoot定时任务配置及遇到的问题 在springboot中遇到的问题笔记 目录 SpringBoot定时任务配置及遇到的问题 目录 注解配置 创建定时任务执行类,配置定时任务注解@Scheduled 讲讲cron表达式 注意事项 ... -
Java 定时任务配置文件
2018-11-29 21:08:58Java 定时任务配置文件 配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=&... -
@scheduled注解配置时间_探究 Spring 的定时任务配置
2020-11-14 04:56:48作者 |郭朝兴责编 |Elle出品 | CSDN(ID:CSDNnews)最近在项目开发中...Scheduled是Spring支持的定时任务配置方式,可以用注解或者配置文件的方式进行配置。Quartz是一个强大的企业级任务调度框架,Spring中继承并简化... -
SpringBoot中定时任务配置多线程执行
2018-08-23 10:49:00Spring定时任务在不配置ThreadPool的时候,默认是按照1个线程执行的。...SpringBoot中定时任务配置多线程执行 /** * 多线程执行定时任务 */ @Configuration public class ScheduleConfig ... -
spring定时任务配置详解
2016-01-12 20:52:22自己备用的两种spring定时任务配置 1.使用spring配置文件方式进行配置 2.使用spring注解方式进行配置接下来咱们就用配置文件的方式进行配置 1、Scheduler的配置... -
关于springboot定时任务配置线程池之后任务重复执行问题,踩坑
2020-03-26 11:03:38关于springboot定时任务配置线程池之后任务重复执行问题,踩坑 最近遇到一个问题。项目中有一个job 的定时任务mytask。里面有七个定时任务。有3秒执行一次的,有五秒的,有十秒的,有两三分钟的,也有个把小时的。... -
Mysql定时任务配置(事件创建)
2018-11-20 23:53:45Mysql定时任务配置(事件创建) 今天项目组需要对数据库中一个字段进行定时更新,本来我是想用Quartz做定时任务的。但是项目组架构说定时任务较多,怕有冲突让我使用数据库的定时任务,所以我就学习了一下。下边是... -
Quartz——Spring定时任务配置
2016-09-24 17:20:23刚来公司,听说用到了很多的定时任务,于是自己偷偷实现了一个小例子,...Spring的定时任务配置分为三个步骤: 1、定义任务 2、任务执行策略配置 3、启动任务 具体说明: 1、定义任务 -
Spring定时任务配置
2020-05-09 17:49:49一、实现功能 Spring实现定时任务。 二、环境 3.1.2.RELEASE 三、具体操作步骤 ...(4)配置定时任务的线程池 <task:scheduler id="myScheduler" pool-size="5"/> (5)整体 <beans xmlns="h -
三个标签完成springboot定时任务配置
2019-06-27 16:23:46文章目录1. 问题描述2. 解决方案:2.1 标签12.2 标签2和32.2.1 具体代码2.2.2 代码解析标签2,@Configuration 用在类上定时类上;...结合springboot,只需三个标签就能完成定时任务配置。 2.1 标签... -
Linux下的crontab定时任务配置和启动
2020-06-07 11:52:09Linux下的crontab定时任务配置和启动,安装查看,添加,执行。 -
Spring的定时任务配置
2014-10-15 22:56:28spring的定时任务配置分为三个步骤: 1、定义任务 2、任务执行策略配置 3、启动任务 1、定义任务 class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> ... -
spring的定时任务配置
2014-10-09 10:39:42spring的定时任务配置分为三个步骤: 1、定义任务 2、任务执行策略配置 3、启动任务 1、定义任务 class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> ...
-
前端知识-webpack前端构件工具
-
Qt项目实战之基于Redis的网络聊天室
-
商业的本质——杰克·韦尔奇著
-
细多管CPC线性菲涅耳聚光系统仿真及实验研究
-
2021-01-27
-
pyechart数据可视化
-
nacos-server-1.1.3.zip.tar
-
性能测试面面观
-
7-2 3-1.约数判断并输出
-
GDKOI 2021 day1
-
python列表常用方法
-
Array.prototype.includes监测数组中是否包含某个元素
-
Excel高级图表技巧
-
kettle实验五:使用参照表清理数据
-
第1章 Java入门基础及环境搭建【java编程进阶】
-
Object.keys()和Object.values()
-
pdfbox-debugger-2.0.13.jar
-
云计算基础-Linux系统管理员
-
转行做IT-第8章 类与对象、封装、构造方法
-
revman5.3.zip