2014-10-28 1 views
0

17시에서 18시 사이에 1 분 간격으로 실행할 수있는 작업이 필요합니다. 작업이 완료되지 않은 경우 다시 실행하면 안됩니다.봄 + 석영으로 직접 콩을 만들어야하나요?

org.springframework.scheduling.quartz.CronTriggerBean은 필자가 필요로하는 것처럼 보이지만 동시성에 대해서는 아무 것도 발견하지 못했습니다.

내 요구에 맞는 석영 콩을 아시지 않습니까? 발견 된 모든 javadoc에는 거의 모든 링크가 깨졌습니다. http://docs.spring.io/spring/docs/3.1.x/javadoc-api/org/springframework/scheduling/quartz/CronTriggerBean.html

아니면 내 자신의 종류의 콩을 만들어야합니까?

석영은 1.8.5, 봄철은 2.5.6 감사합니다.

답변

1

- 물론 CronTriggerBean이 귀하의 케이스에 적합합니다. 필요한 표현은 0 * 17 * *입니까? 17 분 1 초부터 시작하여 마지막 트리거가 17.59 분에 실행됩니다.

동시성을 비활성화하려면 새 버전에서 작업 클래스에 @DisallowConcurrentExecution을 넣을 수 있습니다. 1.8 버전에서는 주석이 지원되지 않는다고 생각합니다. 대신 작업 클래스에 "StatefulJob 구현"을 넣어야 한 번에 하나의 스레드에서만 실행할 수있는 StatefulJob을 구현할 수 있습니다.

-quartz를 사용하는 샘플 응용 프로그램 1.8은 다음에서 찾을 수 있습니다. http://www.mkyong.com/spring/spring-quartz-scheduler-example/

0

2.5 JavaDoc은 here입니다.

Spring 2.5에서는 MethodInvokingJobDetailFactoryBean을 사용할 때 XML에서 동시 속성을 설정할 수 있습니다. 이를 설정하면 여러 인스턴스가 동시에 실행되지 않지만 트리거는 작업의 이전 인스턴스가 완료 될 때 대기열에 넣어 실행됩니다.

<bean id="fooJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
    <property name="targetObject" ref="fooManager" /> 
    <property name="targetMethod" value="myJOb" /> 
    <property name="concurrent" value="true"/>  
    </bean> 
: 여기

은 샘플입니다
관련 문제