博客
关于我
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/

你可能感兴趣的文章
Objective-C实现9×9二维数组数独算法(附完整源码)
查看>>
Objective-C实现A*(A-Star)算法(附完整源码)
查看>>
Objective-C实现A-Star算法(附完整源码)
查看>>
Objective-C实现abbreviation缩写算法(附完整源码)
查看>>
Objective-C实现ABC人工蜂群算法(附完整源码)
查看>>
Objective-C实现activity selection活动选择问题算法(附完整源码)
查看>>
Objective-C实现AC算法(Aho-Corasick) 算法(附完整源码)
查看>>
Objective-C实现adaboost算法(附完整源码)
查看>>
Objective-C实现Adler32算法(附完整源码)
查看>>
Objective-C实现AES算法(附完整源码)
查看>>
Objective-C实现AffineCipher仿射密码算法(附完整源码)
查看>>
Objective-C实现aliquot sum等分求和算法(附完整源码)
查看>>
Objective-C实现all combinations所有组合算法(附完整源码)
查看>>
Objective-C实现all permutations所有排列算法(附完整源码)
查看>>
Objective-C实现all subsequences所有子序列算法(附完整源码)
查看>>
Objective-C实现AlphaNumericalSort字母数字排序算法(附完整源码)
查看>>
Objective-C实现alternate disjoint set不相交集算法(附完整源码)
查看>>
Objective-C实现alternative list arrange备选列表排列算法(附完整源码)
查看>>
Objective-C实现An Armstrong number阿姆斯特朗数算法(附完整源码)
查看>>
Objective-C实现anagrams字谜算法(附完整源码)
查看>>