Обычно я делал бы что-то подобное, чтобы запланировать выполнение задания в Spring периодически с cron в заданном часовом поясе:
@Scheduled(cron = "0 0 10 * * *", zone = "Europe/Stockholm")
public void scheduleStuff() {
// Do stuff
}
Это будет блокировать поток, вызывающий scheduleStuff
, пока задание не будет выполнено.завершено.Однако в этом случае все «вещи», которые я хочу сделать, реализованы с использованием неблокирующих строительных блоков Springs проектный реактор (то есть Mono
, Flux
и т. Д.).
Например, скажем, я хочу периодически запускать эту функцию:
Flux<Void> stuff() {
return ..
}
Конечно, я могу просто вызвать stuff().subscribe()
(или даже stuff().block()
), но это заблокирует поток.Есть ли лучший способ добиться того же, что и @Scheduled(cron = "0 0 10 * * *", zone = "Europe/Stockholm")
для неблокирующего кода?
Я использую Spring Boot 2.1.