我正在构建一个应用程序,它每隔'n'秒就会从数据库中读取一次数据..在我的@Scheduled方法中,我想从数据库中读取数据以配置@Scheduled任务。在每个时期阅读都是很重要的,因为它可以随时更改。 因此,当我从数据库表中读取数据“期间”时,我想将其访问到我的@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..
}
答案 0 :(得分:0)
您可以在@Scheduled方法中创建一个新的调度程序。
ScheduledExecutorService executor = Executors.newScheduledThreadPool(4);
executor.scheduleWithFixedDelay(() => {
// do your stuff
}, 0, delay, TimeUnit.SECONDS);
delay
是您从数据库中读取的内容。
答案 1 :(得分:0)
这是什么问题?调度不起作用吗?您@EnableScheduling
吗?可以,但不能与您的变量一起使用吗?
如果我正确理解,您将从数据库中读取一个变量,然后希望在该变量的延迟时间内安排一些时间。因此,您需要首先从数据库中读取数据,将其设置为变量delay
,然后使用@Scheduled(fixedDelay = delay)
调用另一个方法。