Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring调度程序:从下午12:25开始,然后每隔15分钟运行一次_Java_Spring Boot_Scheduler - Fatal编程技术网

Java Spring调度程序:从下午12:25开始,然后每隔15分钟运行一次

Java Spring调度程序:从下午12:25开始,然后每隔15分钟运行一次,java,spring-boot,scheduler,Java,Spring Boot,Scheduler,我有2台服务器,在两个计划程序运行中: 1) 主服务器 2) 灾难恢复服务器 我希望Fist scheduler在12:15运行,12:15之后应该每15分钟运行一次。 第二个调度器在12:25开始运行,然后每隔15分钟运行一次 因此两者不会互相冲突。不幸的是,您不能使用@Scheduled(initialDelay=X,fixeddedelay=Y,fixedRate=15*60*1000)或使用CRON表达式在下午12:25开始,然后每15分钟进行一次编码 幸运的是,您只需要从每小时过去25

我有2台服务器,在两个计划程序运行中: 1) 主服务器 2) 灾难恢复服务器

我希望Fist scheduler在12:15运行,12:15之后应该每15分钟运行一次。 第二个调度器在12:25开始运行,然后每隔15分钟运行一次


因此两者不会互相冲突。

不幸的是,您不能使用
@Scheduled(initialDelay=X,fixeddedelay=Y,fixedRate=15*60*1000)或使用CRON表达式在下午12:25开始,然后每15分钟进行一次编码

幸运的是,您只需要从每小时过去25(或15)分钟开始,每15分钟编码一次,每小时、每天、每年编码一次

我们使用在线cron表达式生成器(请注意下面关于5、6或7字段cron表达式的讨论):

@计划(cron=“0 25/15*?**”)每15分钟一次
@每15分钟计划一次(cron=“0 15/15*?**”)
,从一小时后的15分钟开始

请不要忘记配置上的
@EnableScheduling
注释

*cron表达式讨论*
请注意,根据Spring所支持的
crontab
,cron表达式可以有5(无秒),但是它失败了,5、6(秒和月天数)是我的原始测试所支持的唯一选项,或者7个字段(秒、月天数和周天数)。Spring拒绝了原来粘贴的7个字段表达式;我已经用6进行了测试,它工作正常(但几天和几年都是明星,即所有

这可能是一个非常复杂的系统。您的简单描述不允许我们帮助您。向我们展示您的代码等。您好@JHBonarius,我在调度程序运行的两台服务器上都有2台服务器,1)实时服务器2)灾难恢复服务器,我的调度程序只是从数据库中选择记录,向用户发送短信,然后用flag=SENT更新同一记录。问题是,有时两台服务器调度程序发生冲突,他们选择相同的记录并向用户发送2条短信。您好@JHBonarius,如果需要进一步澄清,请让我知道,因此,您可以为我提出一些解决这个问题的好方法。您好@Diginoise非常感谢您的确认。下面提到的是我的实际问题。我的计划程序运行的两台服务器上都有2台服务器,1)实时服务器2)灾难恢复服务器,我的计划程序只是从数据库中拾取记录,向用户发送短信,然后用flag=SENT更新同一记录。问题是,有时两台服务器计划程序发生冲突,它们拾取相同的记录并向用户发送2条短信。我有点困惑,我们如何解决这个问题,而不使用任何额外的yml配置参数。您的帮助很受欢迎。您评论的cron表达式在spring boot中看起来是无效的cron表达式,因为据我所知,spring cron只接受6个参数。在quartz调度中,这将起作用。如果我的理解不正确,请纠正我。除此之外,我发布这个问题的实际问题是不同的。我已经在上面发表了评论,请suggest@SahilVerma-我已经更新了关于cron表达式的答案。只要两台服务器上的系统时间设置正确,并且时间漂移(NTP守护进程必须在两台服务器上运行)得到解决,在生产服务器上使用一个时间表,在DR服务器上使用另一个时间表(移动10分钟)就可以了,除非处理sms消息的发送需要超过10分钟。您的例程只是请求所有不带SENT标志的记录,然后遍历这些发送消息,并在每次发送消息后更新记录吗?我不知道NTP守护进程。是的,我的调度程序只是选择没有发送标志的记录,然后处理并在处理后更新发送标志。但有时,不同服务器上的两个调度程序都会选择相同的记录,然后发送sms,因为duplicassy正在发生。两台服务器上的时间相同。每个调度程序几乎不需要2分钟来完成处理。你能帮忙吗。我希望你能在之前的评论中给予帮助,如果可能的话,请你详细说明一下,因为我对这件事有点陌生。如果我将cron设置为0 25/15*?*,您的评论看起来有点有希望意味着它将运行@12:25,12:40,12:55,然后运行1:25,1:40,1:55。。。。如果我遗漏了什么,请纠正我。