Spring 引导@Scheduled fixedDelay 操作

Spring Boot @Scheduled fixedDelay manipulation

我正在构建一个应用程序,它每隔 'n' 秒从数据库中读取数据。在我的 @Scheduled 方法中,我想从我的数据库中读取数据,以配置我的 @Scheduled 任务。在每个时期阅读很重要,因为它随时都可能发生变化。 因此,当我从数据库 table 中读取数据 'period' 时,我想将其访问到我的 @Scheduled(fixedDelay = period) 中。我的代码目前不使用读取的 db 值,但在下面复制了我的代码。


代码:

@Scheduled(fixedDelay = 60000)
public void startSchedule() throws InterruptedException {

    //read data from db to configure Scheduling
    //equalize fixedDelay = db.getPeriod(); -> i am not able to do that...

    //do other fancy thing..

}

您可以在@Scheduled 方法中创建一个新的调度程序。

ScheduledExecutorService executor = Executors.newScheduledThreadPool(4);
executor.scheduleWithFixedDelay(() => {
    // do your stuff
}, 0, delay, TimeUnit.SECONDS);

delay这是你从数据库中读到的。

问题是什么?调度不工作?你 @EnableScheduling 了吗?它是否适用于您的变量?

如果我理解正确的话,你会从数据库中读取一个变量,然后你想在该变量的延迟中安排一些事情。因此,您需要先从数据库中读取数据,将其设置为变量 delay,然后使用 @Scheduled(fixedDelay = delay).

调用另一个方法