2012-08-28 12 views
5

私は、スタートURLとしてシードパラメータを使用してクロールするWebクローラを開発しました。可能であれば、ユーザーはジョブに関してこのタスクをスケジュールできるようにしたいと考えています。Spring3を使った動的ジョブスケジューリング

現在、私はSpring 3.1.2Hibernateを使用しています。私はユーザーにcronJobのパラメータを受け取るフロントエンドを与える必要があり、それに基づいて私はクローラを実行したい。それは春を使って行うことが可能ですか?

Quartzについて少し読んでいますが、春にスケジューラを実装する方法を完全に理解するために、SOや他のウェブサイトの記事が完全ではないか、完全ではありません。

私は、誰かが正しい方向に私を導くことを願って、それには3つのコンポーネント

  1. SchedulerFacotry
  2. トリガー
  3. ジョブ(実行するサービス)

があるという基本を知っています。

答えて

9

クォーツスケジューラは、ジョブに適したツールです。何らかの理由で、ほとんどすべてのチュートリアルでは、起動時にXMLでジョブを定義することに重点を置いていますが、Quartzは実行時にジョブをスケジューリングすることができます((re | un-))。

クォーツスケジューラを起動するには、Springの利点を利用できますが、コードから直接操作することもできます。ここでは簡単な例from the documentation次のとおりです。

ここ
JobDetail job = newJob(SimpleJob.class) 
    .withIdentity("job1", "group1") 
    .build(); 

CronTrigger trigger = newTrigger() 
    .withIdentity("trigger1", "group1") 
    .withSchedule(cronSchedule("0/20 * * * * ?")) 
    .build(); 

scheduler.scheduleJob(job, trigger); 

あなたは、仕事(実行するためのJavaコードの一部)を定義トリガー(それを実行するとき、ユーザーは任意の有効なCRON式を指定することができます)、それを包みますすべてそれをスケジューリングします。 スケジューラインスタンスはSpringによってインジェクトでき​​ます。 Springも適切なシャットダウンを処理します。

+0

ご返信ありがとうございます。 Quartzを使用するのではなく、Springで提供される 'TimerFactoryBean'' ScheduledTask'を使用して行うことが可能です。ドキュメントにあるように、このメソッドについても言及しています。あなたはそれを調べましたか? –

+1

'newJob(...)'は実際には 'JobBuilder.newJob(...)'です。上記の例では、静的メソッドnewJob(...)は静的にインポートされるため、クラス名で参照する必要はありません。 –

+0

'TriggerBuilder.newTrigger()'と 'CronScheduleBuilder.cronSchedule(...) 'にも同じことが当てはまります –

関連する問題