2011-01-25 4 views
7

MongoDBの周りにアプリを構築しており、cronのようなジョブを定期的に実行する必要があります。プロジェクトがJDBCを使ってRDBMSをベースにしていたときは、以前はQuartzを使っていました。クォーツスケジューラをJDBCなしで永続化する

このプロジェクトでメインデータストアとして既にMongoDBを使用しているので、単にQuartzジョブを永続させるためにRDBMSを導入したくないのですが、MongoDBにはJobStoreの実装がないようです。

誰でも、QuartzをMongoDBでバックアップする方法、またはQuartzの代わりに使う方法のどちらかをお勧めしますか?私のニーズはかなりシンプルです(いくつかの設定方法でさまざまなJavaジョブを実行します)。

+0

私はこのような製品は知らないが、今日までは、以前はQuartzについて聞いたことがない。明確な[JobStore](http://www.docjar.com/docs/api/org/quartz/spi/JobStore.html)インターフェイスがあることを考えると、MongoDB Java Driverを使用して実装できるはずですそのような店。 「自由で働いている」ほど良くないのですが、現時点でこのようなことを見つけるつもりはないと思います。 –

+0

Quartzでは、(1)クラスタ環境で実行している場合、または(2)JVMの再起動の間に保持する必要がある永続ジョブのプロパティを使用する場合のみ、JobStoreインターフェイスの実装はオプションです。それ以外の場合は、起動時にスケジューラをインスタンス化してジョブを追加するだけです。 –

答えて

3

私たちはSpringでquartzを実行します。これは、定義されたジョブと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

これはすばらしいダンです。それを共有してくれてありがとう。 – Eelco

+0

これは非常に興味深いようです。ありがとう。 – GreenKiwi

+0

この実装は定期的なアラームをサポートしていますか?トリガをデータベースから自動的にリロードし、アプリケーションの再起動時にそれらをスケジュールしますか? – Gopinath

関連する問題