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

你可能感兴趣的文章
Nginx 的 proxy_pass 使用简介
查看>>
Nginx 的配置文件中的 keepalive 介绍
查看>>
Nginx 结合 consul 实现动态负载均衡
查看>>
Nginx 负载均衡与权重配置解析
查看>>
Nginx 负载均衡详解
查看>>
nginx 配置 单页面应用的解决方案
查看>>
nginx 配置https(一)—— 自签名证书
查看>>
nginx 配置~~~本身就是一个静态资源的服务器
查看>>
Nginx 配置清单(一篇够用)
查看>>
Nginx 配置解析:从基础到高级应用指南
查看>>
nginx+php的搭建
查看>>
nginx+tomcat+memcached
查看>>
nginx+Tomcat性能监控
查看>>
nginx+uwsgi+django
查看>>
Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流
查看>>
nginx-vts + prometheus 监控nginx
查看>>
Nginx下配置codeigniter框架方法
查看>>
Nginx之二:nginx.conf简单配置(参数详解)
查看>>
Nginx代理websocket配置(解决websocket异常断开连接tcp连接不断问题)
查看>>
Nginx代理初探
查看>>