博客
关于我
spring定时任务schedule未执行或超时的几点验证
阅读量:314 次
发布时间:2019-03-03

本文共 798 字,大约阅读时间需要 2 分钟。

近来由于项目的需要,开发了几个定时任务。由于项目已经集成了Spring,并提供了注解的支持,因此选择了Schedule的方式进行配置和使用。网上关于Schedule的配置和使用说明都很多,因此上手相对方便。接下来,谈一下几点感受。

1. 配置方便

现在大多数项目都会使用Spring框架,使用Schedule会非常方便。只需在现有的Spring基础上加入Task的支持即可。通过扫描基础包,可以轻松将相关配置包含进去。此外,支持cron表达式,这也大大提升了使用的便利性。

2. 关于超时时间

Schedule默认是没有超时时间的。在实际使用中,曾经做过一个验证,发现一个任务即使执行4-5个小时也不会超时。因此,在开发定时任务时,需要特别注意任务的执行时间。最初开发时,考虑到任务执行时间较长,专门查找是否有超时设置的相关资料,但相关资料并不多。

3. 关于执行顺序

Schedule的任务是按顺序执行的,执行顺序与配置的时间先后顺序一致。每个任务在上一个任务执行完毕后才会开始执行。结合前面所说的任务没有超时时间(或者超时时间很长),在配置时需要合理安排任务的先后顺序以及执行时间间隔。

4. 任务未执行

在配置合理的情况下,任务完全不会未执行。但如果任务在指定时间点未执行,可能是由于上一个任务在本任务设置的执行时间点尚未完成导致的延后执行。这种情况在测试时尤为常见,因为大多数任务设置在凌晨运行,导致测试不便。解决方法一般有两种:一种是修改服务器时间,另一种是调整任务的执行时间(不建议,因为这需要修改代码,稍有疏忽可能导致上线时的代码变更)。如果应用已启动,修改服务器时间无效,需要重启服务以使时间生效。

5. 支持相对对配置少

Schedule的配置相对简单,但也带来了一些缺点。因为配置较少,所以对一些个性化需求支持也较少。对于一些特殊需求,通常需要编码实现,而没有通用的配置支持。

转载地址:http://hdtm.baihongyu.com/

你可能感兴趣的文章
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
NetApp凭借领先的混合云数据与服务把握数字化转型机遇
查看>>
NetBeans IDE8.0需要JDK1.7及以上版本
查看>>
netcat的端口转发功能的实现
查看>>
netfilter应用场景
查看>>
netlink2.6.32内核实现源码
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
NetScaler的常用配置
查看>>
netsh advfirewall
查看>>
NETSH WINSOCK RESET这条命令的含义和作用?
查看>>
Netty WebSocket客户端
查看>>
netty 主要组件+黏包半包+rpc框架+源码透析
查看>>
Netty 异步任务调度与异步线程池
查看>>
Netty中集成Protobuf实现Java对象数据传递
查看>>
Netty事件注册机制深入解析
查看>>
Netty原理分析及实战(四)-客户端与服务端双向通信
查看>>
Netty客户端断线重连实现及问题思考
查看>>
Netty工作笔记0006---NIO的Buffer说明
查看>>
Netty工作笔记0007---NIO的三大核心组件关系
查看>>
Netty工作笔记0011---Channel应用案例2
查看>>