当前位置: 首页 > 知识库问答 >
问题:

spring boot调度器fixedDelay和cron

朱啸
2023-03-14

我正在运行一个spring boot计划的进程,需要5-10秒才能完成。完成后,60秒后流程再次开始(注意,我使用的不是fixedRate):

@Scheduled(fixedDelay=60_000)

现在,我想限制它每分钟运行周一至周五上午9点到下午5点。我可以用

@Scheduled(cron="0 * 9-16 ? * MON-FRI")

这里的问题是,这与fixedRate类似--进程每60秒触发一次,而不考虑完成上一次运行所花费的时间。

有没有办法把这两种技术结合起来?

共有2个答案

陶璞
2023-03-14

您可以向注释传递固定的延迟(以及任何其他数量的可选参数),如下所示:

@Scheduled(cron="0 * 9-16 ? * MON-FRI", fixedDelay=60_000)

来自文档:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/schedulation/scheduled.html

韩嘉胜
2023-03-14

试试看:

@Schedules({ 
  @Scheduled(fixedRate = 1000), 
  @Scheduled(cron = "* * * * * *")
})
 类似资料:
  • 是否有任何专家在使用spingdge调度程序时遇到问题? 我试着设置它在工作日的下午2点到晚上10点之间每小时运行15分钟,但是好像是按分钟触发的,这是因为我的cron出错了还是我应该做smthg来控制它? 通过springboot-web-started在linux服务器上运行 版本

  • 我使用RxJava2 Android网络的网络调用。我面临的问题是,当我试图通过命中API时,有时它不会给出任何响应,而当我试图通过命中API时,它总是给出回应 和

  • 在阅读了Akka的文档和网上的一些帖子之后,我仍然对路由器和调度器之间的关系没有一个清楚的认识。 1)路由器是否总是使用dispatcher向路由进行调度?路由器是否可以不使用dispatcher完成其工作? 2)如果配置中没有定义额外的调度器,我的理解是将使用默认调度器。在我的actor系统中,我有一个集群,其中有两个生产者actor使用路由器actor和三个消费者actor。生产者和消费者都运

  • @Scheduled使用及详解 @Scheduled注解:任务自动化调度 @Scheduled 标记要调度的方法的注解。必须指定 cron,fixedDelay或fixedRate属性之一。 该注解共有8个参数,这里我重点介绍几个必要的参数:

  • Storm 现在有 4 种内置的 schedulers(调度器): DefaultScheduler, IsolationScheduler, MultitenantScheduler, ResourceAwareScheduler. Pluggable scheduler(可插拔的调度器) 你可以实现你自己的 scheduler(调度器)来替换掉默认的 scheduler(调度器),自定义分配e

  • 调度器提供了同步递增策略变化的方法。 它应以手工艺等一致性算法为基础,以确保所有执行者的一致性和一致性。 通过调度器用户们可以轻松地建立分布式集群。 调度器的方法分为两部分。 第一种是与Casbin相结合的方法。 这些方法应该在Casbin内部调用。 用户们可以使用由Casbin本身提供的更完整的api。 另一个部分是调度器本身定义的方法,包括调度器初始化方法, 和不同算法提供的不同函数,如动态资