У меня есть задача @Scheduled
, которая каждую секунду отправляет данные клиенту через веб-сокет.
Мне нужно запустить мою запланированную задачу только тогда, когда клиент попросит об этом.
Вместо этого моя задача запускается при запуске моего сервера. это не то поведение, которое я хочу.
в настоящее время у меня есть компонент моей запланированной задачи, который объявлен в моем SchedulingConfigurer:
@Configuration
@EnableScheduling
public class SchedulingConfigurer implements org.springframework.scheduling.annotation.SchedulingConfigurer {
@Bean
public ThreadPoolTaskScheduler taskScheduler() {
return new ThreadPoolTaskScheduler();
}
@Bean
public ScheduledTask scheduledTask() {
return new ScheduledTask();
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setTaskScheduler(taskScheduler());
}
}
Вот мой код контроллера Spring:
@MessageMapping("/hello")
public void greeting() throws Exception {
//How do I start my scheduled task here ?
}
Может быть, это невозможно сделать с аннотацией @Scheduled
, и мне нужно использовать интерфейс TaskScheduler
?