Spring @Schleduled 注释不起作用
Spring @Schleduled annotation does not work
我想要一个 spring 计划任务,它每 10 秒运行一次,但是由于某种原因,该任务只运行一次并且不再重复。
请不要建议我使用其他类型的任务,因为我需要专门使用spring个任务。
@Scheduled(fixedRate = 10000, initialDelay = 1000)
public void myTask() {
...
}
在我的主配置中 class 我也添加了 @EnableScheduling
。
调度是在特定时间段内执行任务的过程,但您希望使其异步,因此会有一些变化
创建一个配置 class 来管理 Async
操作,这样您就可以使用 ThreadPoolTaskExecutor
:
@EnableScheduling
@Configuration
public class TaskConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar)
{
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(10);
threadPoolTaskScheduler.setThreadNamePrefix("your-scheduler-");
threadPoolTaskScheduler.initialize();
scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
}
}
然后您可以 运行 异步作业,如下所示:
@Component
public class HelloSender {
@Scheduled(fixedRate = 10000)
public void myTask() {
System.out.println("im running asynchronous with Worker : " + Thread.currentThread().getName());
}
}
有关 ThreadPoolTaskExecutor
的更多信息,请查看此处:https://docs.spring.io/spring-framework/docs/3.0.x/spring-framework-reference/html/scheduling.html
我想要一个 spring 计划任务,它每 10 秒运行一次,但是由于某种原因,该任务只运行一次并且不再重复。
请不要建议我使用其他类型的任务,因为我需要专门使用spring个任务。
@Scheduled(fixedRate = 10000, initialDelay = 1000)
public void myTask() {
...
}
在我的主配置中 class 我也添加了 @EnableScheduling
。
调度是在特定时间段内执行任务的过程,但您希望使其异步,因此会有一些变化
创建一个配置 class 来管理 Async
操作,这样您就可以使用 ThreadPoolTaskExecutor
:
@EnableScheduling
@Configuration
public class TaskConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar)
{
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(10);
threadPoolTaskScheduler.setThreadNamePrefix("your-scheduler-");
threadPoolTaskScheduler.initialize();
scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
}
}
然后您可以 运行 异步作业,如下所示:
@Component
public class HelloSender {
@Scheduled(fixedRate = 10000)
public void myTask() {
System.out.println("im running asynchronous with Worker : " + Thread.currentThread().getName());
}
}
有关 ThreadPoolTaskExecutor
的更多信息,请查看此处:https://docs.spring.io/spring-framework/docs/3.0.x/spring-framework-reference/html/scheduling.html