У меня есть этот класс:
@Slf4j
@Component
public class MyScheduler {
@Value("${scheduler.count}")
private int SCHEDULER_COUNT;//for example 5
private final SendRequestForResponseService sendRequestForResponseService;
public MyScheduler(SendRequestForResponseService sendRequestForResponseService) {
this.sendRequestForResponseService = sendRequestForResponseService;
}
@PostConstruct
public void getRequestResponse() {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(SCHEDULER_COUNT, new ThreadPoolTaskScheduler());
for (int i = 0; i < SCHEDULER_COUNT; i++) {
scheduledExecutorService.scheduleWithFixedDelay(sendRequestForResponseService::sendGetResponseRequest, 1, 1, TimeUnit.NANOSECONDS);
}
}
}
После запуска сервера я создаю ScheduledExecutorService
со значением corePoolSize
из свойств (SCHEDULER_COUNT) и запускаю SCHEDULER_COUNT раз.Теперь у меня есть 5 планировщиков, которые запускают каждую 1 НС.
Теперь мне нужен механизм для изменения свойства SCHEDULER_COUNT
и повторного запуска ScheduledExecutorService
с новым контентом (например, 10) и без перезапуска сервера.Возможно ли какие-либо идеи?
Одной из идей является создание службы отдыха, которая перезагрузится из значения и перезапустит планировщик.но это в теории