情况如下图,刚设置了定时任务有数据,过几秒再看表中没数据了,定时任务到时间点也不执行
后续情况:
现在在本地测试 用corn表达式设置每_Be_Water_ 1分钟执行一次 发现触发了 但是只执行了一次 是什么情况
可以参考一下如下方式。望采纳!
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?"); //Cron表达式,每5秒执行一次
CronTrigger cronTrigger = TriggerBuilder.newTrigger()
.withIdentity("CronJob", "AnchorTriggers") //(name, group)唯一标识一个Trigger
.startNow() //调用scheduler.scheduleJob()后立即开始执行定时任务
.withSchedule(scheduleBuilder) //不同的scheduleBuilder
.build();
服务器中有没有异常日志。记录不会凭空被丢失。这个要自己检查一下,定时任务有没有执行不是看数据库有没有内容,在定时任务业务中去加log日志信息。
数据消失会不会是你设置的定时任务是一次性的,执行完就被删除掉了
不知道我小阿giao能不能帮到你
【springboot和quartz整合实现动态定时任务(持久化单节点) - 请叫我西毒 - 博客园】https://www.cnblogs.com/hhhshct/p/9707710.html
那些配置过程嘛?兄弟可以看看我这个
quartz 不执行Quartz定时任务https://blog.csdn.net/weixin_39972519/article/details/111574805
望采纳谢谢啦
看下定时配置,
把日志调整为debug级别,同时输出sql,这样就能在日志中判断出是什么时候在什么情况下删除了数据
先检查一下你的配置有没有问题,实在不行就换springboot自带的Scheduled定时任务吧,这个简单明了
仔细的查一下日志,日志会详细的记录异常信息,如syslog,这些日子条条怀疑保存,你查一下他的位置,然后进行一个服务类的应急响应
1)把原来的数据从界面全部删除或禁用之类的
2)重新定义一个,重新定义时要特别注意执行策略
执行策略详解:
2.1)立即执行(所有misfire的任务会马上执行)打个比方,如果9点misfire了,在10:15系统恢复之后,9点,10点的misfire会马上执行
2.2) 执行一次(会合并部分的misfire,正常执行下一个周期的任务)假设9,10的任务都misfire了,系统在10:15分起来了。只会执行一次misfire,下次正点执行。
2.3)放弃执行(所有的misfire不管,执行下一个周期的任务)
3)成功后检查表:请qrtz_triggers、sys_job、qrz_job_detail的数据是否正常,正常的数据如下:
4)执行一次测试
5)还不正常,查看代码,重点是这个类:
ScheduleConfig
你可能能看到类似的下面这样的代码:
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setStartupDelay(1); // 延时启动,可以设置1到5秒
factory.setOverwriteExistingJobs(true); //这个一定要设置成true---关键
6)若还是不正常,你可以注释ScheduleConfig这个类,这个类是给来配置持久化用的,我们默认走内存更高效,所以可注释
7)如还是不正常,删除类ScheduleConfig,再重启测试
8)如果还不正常,我可以给你远程看下! 祝你顺利
触发器写的不对,你这种写法只定义执行一次,将触发器改成如下代码试试
// 定义一个Trigger,定义该job在4秒后首次执行,并且每隔一分钟执行一次
Date startTime = new Date();
startTime.setTime(startTime.getTime() + 4000L);
SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1")// 定义名字和组
.startAt(startTime)//定义开始时间
.withSchedule( //定义任务调度的时间间隔和次数
SimpleScheduleBuilder
.simpleSchedule()
.withIntervalInSeconds(60)//定义时间间隔是60秒
.withRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY)//定义重复执行次数是无限次
)
.build();