将 Spring 的 @Scheduled 注释与特定执行程序一起使用
Using Spring's @Scheduled annotation with a specific executor
如何使用特定执行程序将我的 Spring 计划方法告诉 运行?
例如,这是我的 spring 调度程序方法之一,
@Scheduled(fixedRate=1000)
public void scheduleJobs(){
doThese();
}
这里是我的 Java 配置中定义的 2 个执行程序:
@Bean
public Executor taskScheduler() {
ThreadPoolTaskScheduler t = new ThreadPoolTaskScheduler();
t.setPoolSize(2);
t.setThreadNamePrefix("taskScheduler - ");
t.initialize();
return t;
}
@Bean
public Executor newTaskScheduler() {
ThreadPoolTaskScheduler t = new ThreadPoolTaskScheduler();
t.setPoolSize(2);
t.setThreadNamePrefix("newTaskScheduler - ");
t.initialize();
return t;
}
当计划的方法是 运行ning 时,我可以看到它正在使用 taskScheduler
执行器。如何使用 newTaskScheduler
执行程序将它告诉 运行?
Javadoc of @EnableScheduling
在这方面非常详尽。
您需要实施 SchedulingConfigurer
来微调需要使用的 Executor
。
@Configuration
@EnableScheduling
public class AppConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskScheduler());
}
@Bean
public Executor taskScheduler() {
ThreadPoolTaskScheduler t = new ThreadPoolTaskScheduler();
t.setPoolSize(2);
t.setThreadNamePrefix("taskScheduler - ");
t.initialize();
return t;
}
}
尚不支持带有@Scheduled 的执行器资格。
如何使用特定执行程序将我的 Spring 计划方法告诉 运行?
例如,这是我的 spring 调度程序方法之一,
@Scheduled(fixedRate=1000)
public void scheduleJobs(){
doThese();
}
这里是我的 Java 配置中定义的 2 个执行程序:
@Bean
public Executor taskScheduler() {
ThreadPoolTaskScheduler t = new ThreadPoolTaskScheduler();
t.setPoolSize(2);
t.setThreadNamePrefix("taskScheduler - ");
t.initialize();
return t;
}
@Bean
public Executor newTaskScheduler() {
ThreadPoolTaskScheduler t = new ThreadPoolTaskScheduler();
t.setPoolSize(2);
t.setThreadNamePrefix("newTaskScheduler - ");
t.initialize();
return t;
}
当计划的方法是 运行ning 时,我可以看到它正在使用 taskScheduler
执行器。如何使用 newTaskScheduler
执行程序将它告诉 运行?
Javadoc of @EnableScheduling
在这方面非常详尽。
您需要实施 SchedulingConfigurer
来微调需要使用的 Executor
。
@Configuration
@EnableScheduling
public class AppConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskScheduler());
}
@Bean
public Executor taskScheduler() {
ThreadPoolTaskScheduler t = new ThreadPoolTaskScheduler();
t.setPoolSize(2);
t.setThreadNamePrefix("taskScheduler - ");
t.initialize();
return t;
}
}
尚不支持带有@Scheduled 的执行器资格。