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)
.
调用另一个方法
我正在构建一个应用程序,它每隔 '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)
.