Spring Boot @Scheduled фиксированная манипуляция - PullRequest
0 голосов
/ 26 января 2019

Я создаю приложение, которое считывает данные из базы данных каждые 'n' секунд ... в моем методе @Scheduled я хотел бы прочитать данные из моей базы данных для настройки моей задачи @Scheduled. Важно читать в каждом периоде, потому что он может измениться в любое время. Поэтому, когда я прочитал данные 'period' из моей таблицы базы данных, я хотел бы получить доступ к ним в моем @Scheduled (fixedDelay = period). Мой код не использует прочитанное значение в БД в данный момент, но скопировал мой код ниже.


Код:

@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..

}

Ответы [ 2 ]

0 голосов
/ 26 января 2019

В чем вопрос? Планирование не работает? Вы @EnableScheduling? Это работает, но не с вашей переменной?

Если я правильно понимаю, вы бы прочитали переменную из БД, а затем вы хотите запланировать что-то в задержке этой переменной. Таким образом, вам нужно будет сначала прочитать данные из базы данных, установить для нее переменную delay, а затем вызвать другой метод с @Scheduled(fixedDelay = delay).

0 голосов
/ 26 января 2019

Вы можете создать новый планировщик внутри вашего метода @Scheduled.

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

delay это то, что вы прочитали из БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...