2016-12-07 2 views
2

특정 실행 프로그램을 사용하여 스프링 스케줄 된 방법을 실행하도록 알려면 어떻게합니까? 예약 방법은 내가 할 수있는 실행중인 경우 예를 들어특정 실행자와 함께 spring @scheduled 사용

,이

@Scheduled(fixedRate=1000) 
public void scheduleJobs(){ 
    doThese(); 
} 

그리고 여기 내 자바 설정에 정의 된이 개 집행은,

@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를 사용하여 실행하는 방법

답변

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


}