将 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 的执行器资格。

参考- https://jira.spring.io/browse/SPR-14218