2017-02-14 1 views
0

@ 스케줄 주석을 사용하여 여러 작업을 예약하려는 경우 cron 표현식을 사용합니다. 고정 된 시간에 실행해야하는 세 가지 직업이 있습니다. 예를 들어, Job-1은 매일 11시 : PM, Job-2는 매일 오전 7 시부 터 오후 9 시까 지, 1 시간 간격으로 Job-3이 1 시간마다 스케쥴되어 있습니다. 모든 3 가지 일정 작업은 동일한 응용 프로그램의 일부입니다.Springboot를 사용하여 cron 표현식을 통해 여러 작업을 예약하는 방법은 무엇입니까?

나는 똑같이 시도했지만 세 가지 스케줄링은 일어나지 않습니다. 내 신청서는 입니다. SpringBoot 신청서. 새로운 스케줄링이 아닙니다. 친절하게 도와주세요. 다음은 그가

cron.expression.job1=0 0 23 * * ? 
cron.expression.job2=0 0 7,9 * * ? 
cron.expression.job3=0 0/60 * * ? 

자바 코드

@EnableScheduling 
@SpringBootApplication 
public class Scheduler{ 
    // doCallScheduleJob Code 
} 

class ScheduleJob{ 

    @Scheduled(cron="${cron.expression.job1}") 
    public sycName1(){ 
      ///doSomething()  
    } 

    @Scheduled(cron="${cron.expression.job2}") 
    public sycName2(){ 
      ///doSomething()  
    } 

    @Scheduled(cron="${cron.expression.job3}") 
    public sycName3(){ 
      ///doSomething()  
    } 
+1

"나는 똑같이 시도했지만 모든 세 가지 스케줄링은 일어나지 않습니다." 다른 사람이 당신을 도울 수 있도록, 당신이 시도한 것을 포함시켜야합니다. –

+0

@RamanujanR 내 접근 방식을 사용하여 내 검색어를 편집했습니다.이 항목을 살펴 보시기 바랍니다. – Saurabh

답변

3

당신은 당신의 TaskScheduler 스레드 풀 크기를 구성해야 내 접근

application.properties입니다. 구성하지 않은 경우 기본 크기는 1이며 평균 봄은 작업을 하나씩 실행합니다. 아래 TaskScheduler를 구성 할 수 있습니다.

@Configuration 
@EnableAsync 
@EnableScheduling 
public class SpringBootConfiguration { 

    @Bean 
    public Executor getTaskExecutor() { 
     return Executors.newScheduledThreadPool(10); 
    } 
} 
+0

내 검색어를 편집 할 때 좀 더 설명해 주실 수 있습니까? 각 스레드를 명시 적으로 호출하거나 Springboot가 처리해야하는지 여부를 알고 싶습니다. – Saurabh

+0

@AaricChen이 제안한 코드를 포함하십시오. 각 작업을 호출 할 필요가 없습니다. 봄은 나머지를 할 것입니다. 또한'@ Scheduled' 메쏘드가 패키지 스캐닝 아래에 있는지 확인하십시오. 또한 두 가지 방법으로'@ Schedule'을 사용하고 있습니다. 그건 오타예요? 이 모든 것을 시도하고 결과에 주석을 답니다. 나는 아직 Spring Boot를 시도하지 않았으므로,'$'를 사용하여 속성 파일을 가져 오는 것에 대해 주석을 달지 않는다. 먼저 하드 코드를 작성하는 것이 좋습니다. –

+0

@RamanujanR 일정이 오타입니다 ... 업데이트 주셔서 감사합니다. – Saurabh

관련 문제