【问题标题】:SpringBoot @Scheduled random delay between every two executionsSpring Boot @Scheduled 每两次执行之间的随机延迟
【发布时间】:2020-09-04 09:42:16
【问题描述】:

我对 SpringBoot 还很陌生,并试图使用 @Scheduled 来延迟执行某个任务。 我知道有fixedDelay 参数可以设置为在连续两次执行之间具有固定延迟。

我需要的是,是否可以在每两次执行之间设置 随机 延迟? (我的意思是每个延迟都是随机设置的,但没有将随机延迟设置为 fixedDelay)

我能想到的是,在执行过程中使用fixedDelay,加上随机秒的Thread.sleep(),但感觉应该有更正确的方法来做到这一点。

【问题讨论】:

  • 这能回答你的问题吗? Spring @Scheduled annotation random delay
  • @Lorelorelore 这是一个不同的问题。它只会随机化初始延迟,而不是调用之间的延迟。
  • 是的,但是看看这个答案:stackoverflow.com/a/41815962/3432678 它提到了 fixedDelayString
  • @Lorelorelore 不幸的是,从我的测试来看,这仍然会产生固定延迟而不是随机延迟,我的猜测是该表达式仅评估一次,但并非每次确定下一次延迟时都会评估。跨度>
  • 嗯,是的,我猜是这样......可能你必须考虑其他方法来解决你正在尝试做的事情,而不使用预定注释

标签: java spring-boot cron


【解决方案1】:

似乎没有办法通过使用spring的api来实现。

我最终制定了 2 个具有 2 个不同 fixedDelay 的计划,并且它们都执行相同的任务,例如:第一个延迟为 27 秒,而第二个延迟为 43 秒,因此看起来目标任务正在执行随机延迟而不是固定延迟。

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多