2016-12-07 18 views
2

特定のエグゼキュータを使用してSpringのスケジュールされた方法を実行する方法を教えてください。特定のエグゼキュータを使用して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は、その領域でかなり網羅的です。

Executorを使用する必要があるかどうかを微調整するには、SchedulingConfigurerを実装する必要があります。

+0

あなたはより具体的なことはできますか? '@ Scheduled'メソッドを別のエグゼキュータ上でどのように実行できるかを指示するドキュメントでは何も見つかりません。 @Gauravが指摘したように、まだ(まだ)可能ではないと恐れています。 – sevteen

+0

私の答えはあなたの質問に答えることはできません。エグゼクティブ_perスケジュールメソッドを微調整できるようにしたい場合は、現時点では不可能ですが、[トラッカーに問題があります](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; 
} 


} 
関連する問題