Java 使用弹簧&x27;具有特定执行器的s@Scheduled批注
如何让Spring调度方法使用特定的执行器运行 例如,这是我的spring调度程序方法之一Java 使用弹簧&x27;具有特定执行器的s@Scheduled批注,java,spring,spring-boot,quartz-scheduler,Java,Spring,Spring Boot,Quartz Scheduler,如何让Spring调度方法使用特定的执行器运行 例如,这是我的spring调度程序方法之一 @Scheduled(fixedRate=1000) public void scheduleJobs(){ doThese(); } 下面是我的Java配置中定义的两个执行器: @Bean public Executor taskScheduler() { ThreadPoolTaskScheduler t = new ThreadPoolTaskScheduler(); t.
@Scheduled(fixedRate=1000)
public void scheduleJobs(){
doThese();
}
下面是我的Java配置中定义的两个执行器:
@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;
}
当调度方法运行时,我可以看到它正在使用taskScheduler
executor。如何告诉它使用newTaskScheduler
executor运行?这方面的内容非常详尽
您需要实施一个
调度配置器
,以微调需要使用的执行器。尚不支持@Scheduled的执行器资格
@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;
}
}
提及-
以下简单代码似乎提供了所需的功能
@Configuration
@EnableScheduling
public class SchedulerConfig {
@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler(){
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(5);
threadPoolTaskScheduler.setThreadNamePrefix("ThreadPoolTaskScheduler");
return threadPoolTaskScheduler;
}
}
根据指南您能更具体一点吗?我在文档中找不到任何指示如何在单独的执行器上运行@Scheduled
方法的内容。正如@Gaurav所指出的,恐怕这是不可能的,我的回答似乎并没有回答你的问题。如果您希望能够按照计划的方法对执行器进行微调,目前还不可能,但确实存在。我的答案是关于自定义所有计划方法使用的执行器。上面评论中的问题已作为副本关闭。活动和开放的票证现在是:该问题已作为副本关闭。开放门票现为: