2016-12-07 35 views
2

如何告訴我的春天計劃的方法使用特定的執行程序來運行?使用spring @scheduled與特定的執行者

例如,這是我的春天調度方法之一,

@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; 
} 

當計劃的方法運行,我可以看到它正在使用taskScheduler執行程序。如何告訴它使用newTaskScheduler執行器運行?

回答

3

Javadoc of @EnableScheduling在這方面非常詳盡。

您需要實施SchedulingConfigurer來微調需要使用哪個Executor

+0

你能更具體?我找不到指示如何在獨立執行程序上運行'@ Scheduled'方法的文檔中的任何內容。恐怕這是不可能的(還),因爲@Gaurav指出 – sevteen

+0

我的回答似乎並沒有回答你的問題。如果您希望能夠按計劃方法微調執行程序,目前無法執行此操作,但是[我們的跟蹤程序]存在問題(https://jira.spring.io/browse/SPR-14218)。我的答案是關於定製所有調度方法使用的執行程序。 –

1
@Configuration 
@EnableScheduling 
public class AppConfig implements SchedulingConfigurer { 

@Override 
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { 
    taskRegistrar.setScheduler(taskExecutor()); 
} 

@Bean 
public Executor taskScheduler() { 
    ThreadPoolTaskScheduler t = new ThreadPoolTaskScheduler(); 
    t.setPoolSize(2); 
    t.setThreadNamePrefix("taskScheduler - "); 
    t.initialize(); 
    return t; 
} 


} 
相關問題