2011-01-25 5 views
7

우리는 MongoDB 주위에 응용 프로그램을 빌드 중이며 주기적으로 cron과 같은 작업을 실행할 필요가 있습니다. 프로젝트가 JDBC가있는 RDBMS를 기반으로 할 때 이런 종류의 작업을하기 전에 Quartz을 사용했습니다.JDBC를 사용하지 않고 Quartz 스케줄러를 영속화시키기

이 프로젝트의 주 데이터 스토어에 이미 MongoDB를 사용하고 있기 때문에 Quartz 작업을 유지하기 위해 RDBMS를 도입하지 않고 MongoDB 구현을위한 JobStore 구현이없는 것 같습니다.

누구나 MongoDB를 사용하여 Quartz를 되돌릴 수있는 방법이나 Quartz를 대신 할 수있는 방법을 추천 할 수 있습니까? 내 요구 사항은 매우 간단합니다 (구성 방식에 따라 다양한 Java 작업 실행, à la cron).

+0

나는 그런 제품을 모른다. 그러나 나는 오늘 전에 Quartz에 대해 들어 본 적이 없다. 명확한 [JobStore] (http://www.docjar.com/docs/api/org/quartz/spi/JobStore.html) 인터페이스가 주어지면 MongoDB Java Driver를 사용할 수 있어야하고 그런 가게. "자유롭고 일하는 것"만큼 좋지는 않지만,이 시점에서 당신이 그런 것을 발견 할 것인지 확신 할 수 없습니다. –

+0

Quartz에서는 JobStore 인터페이스를 구현하는 것이 선택적이다. (1) 클러스터 환경에서 실행 중이거나 (2) JVM 재시작 사이에 보존해야하는 지속성 작업 특성 만 사용해야하는 경우이다. 그렇지 않으면 간단히 스케줄러를 인스턴스화하고 시작할 때 작업을 추가하십시오. –

답변

3

우리는 스프링으로 쿼츠를 실행하며 정의 된 작업과 cron 표현식을 가진 XML 파일 일뿐입니다.

봄에 작업을 선언 :

<bean name="myJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
    <property name="concurrent" value="false"/> 
    <property name="targetBeanName" value="myBean"/> 
    <property name="targetMethod" value="myScheduledMethod"/> 
    </bean> 

    <bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail" ref="myJob"/> 
    <!-- every 30s --> 
    <property name="cronExpression" value="0/30 * * * * ?"/> 
    </bean> 

석영 배선 :와

<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="triggers"> 
     <!-- List of batch jobs to be fed to the scheduler. --> 
     <list> 
     <ref bean="myTrigger"/> 
     </list> 
    </property> 
    </bean> 

실행을 :

import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class App 
{ 
    public static void main(String[] args) throws Exception 
    { 
     new ClassPathXmlApplicationContext("jobs-context.xml"); 
    } 
} 
+0

이것은 다소 정착 한 것입니다. 우리는 Spring을 사용하지 않기 때문에 quartz.properties를 quartz-config.xml 파일에서 가리킨다. http://www.openscope.net/2010/02/05/quartz-scheduled-jobs/ 올바른 방향으로 나를 가리켜 주셔서 감사합니다. –

+6

그건 그냥 임베디드, 바로 실행 중입니까? 어떤 직업에 대해서는 괜찮지 만 지속적인 직업, 특히 비 반복적 인 직업의 경우, 당신은 계속해서 그것을 뒷받침하는 영구 저장소를 갖고 싶어합니다. 그래서 당신은 서비스 테이크 다운 등을 할 수 있습니다. – Eelco

8

내가 여기 있습니다 석영에 대한 MongoDB를 JobStore을 썼다 : https://github.com/mulesoft/quartz-mongodb 모든 것을 지원하는 것은 아니지만 많은 경우에 유용합니다.

+0

그건 대단한 Dan입니다. 공유에 너무 감사드립니다. – Eelco

+0

이것은 매우 흥미로운 것 같습니다. 감사. – GreenKiwi

+0

이 구현은 반복적 인 알람을 지원합니까? db에서 자동으로 트리거를 다시로드하고 응용 프로그램이 다시 시작될 때 일정을 예약합니까? – Gopinath

관련 문제