最近修改项目BUG,定时任务这一块有很多的BUG,改了很久,记录一下相关BUG 问题1 问题场景: 新建一个定时任务,设置定时任务执行时间:2019-06-26 18:00:00 (即只在这个时间点执行一次,然后就再也不执行了) 在到达执行时间之前,进行更新和立即执行都不存在任何问题。 在到达执行时间之后,进行更新和立即执行都报错 错误信息: org.quartz.JobPersistenceException: Couldn’t store trigger: The job (DEFAULT.task-etl-19) referenced by the trigger does not exist. 问题具体原因查找过程: 创建一个周期任务,设置任务每分钟执行一次。发现不会出现这种情况。 查看任务持久化物理表,发现定时任务(只执行一次的定时任务),在执行后会自动删除。 进行代码断点,查看在何处进行的删除,没找到。 进行各种任务属性对比初步推断是quartz框架自身的一种设计,如果没有下次执行时间的任务,会自动进行删除。 在网上查找很久,找到了一篇文章,Quartz Sche.... quartz定时调度任务持久化到数据库后立即执行报错,更新任务报错引出的任务自动删除的相关问题 无
什么是Quartz? 一个定时任务调度框架,简单易用,功能强大可以使实现定时任务的。 在项目开发过程当中,某些定时任务,可能在运行一段时间之后,就不需要了,或者需要修改下定时任务的执行时间等等。 需要在代码当中进行修改然后重新打包发布,很麻烦。使用Quartz来实现的话不需要重新修改代码而达到要求。 springboot整合Quartz定时调度框架 开发环境 JDK版本1.8 springboot版本:2.1.0 开发工具:IDEA 实现一个简单的定时任务 第一步 引入对应的jar 在springboot2.0后官方添加了Quartz框架的依赖,所以只需要在pom文件当中引入 <!--引入quartz定时框架--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> 第二步 创建一个定时任务 由于spr.... springboot整合quartz实现定时任务的动态修改,启动,暂停等操作 springboot