springboot集成quartz并持久化,定时任务到时间也不执行怎么回事,今天在本地测试 用corn表达式设置每1分钟执行一次 发现触发了 但是只执行了一次 是什么情况

情况如下图,刚设置了定时任务有数据,过几秒再看表中没数据了,定时任务到时间点也不执行

img

img

后续情况:
现在在本地测试 用corn表达式设置每_Be_Water_ 1分钟执行一次 发现触发了 但是只执行了一次 是什么情况

img

img

可以参考一下如下方式。望采纳!

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
望采纳谢谢啦

看下定时配置,

你需要把所有配置和配置过程发给我。我才好帮你解决
https://blog.csdn.net/qq_32157851/article/details/84870403?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.pc_relevant_default&utm_relevant_index=2

把日志调整为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的数据是否正常,正常的数据如下:

img

img

img

4)执行一次测试

5)还不正常,查看代码,重点是这个类:
ScheduleConfig
你可能能看到类似的下面这样的代码:

 SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setStartupDelay(1);  // 延时启动,可以设置1到5秒
factory.setOverwriteExistingJobs(true);  //这个一定要设置成true---关键

6)若还是不正常,你可以注释ScheduleConfig这个类,这个类是给来配置持久化用的,我们默认走内存更高效,所以可注释
7)如还是不正常,删除类ScheduleConfig,再重启测试
8)如果还不正常,我可以给你远程看下! 祝你顺利

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

触发器写的不对,你这种写法只定义执行一次,将触发器改成如下代码试试

//  定义一个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();