web-dev-qa-db-ja.com

春のバッチ対クォーツの仕事?

バッチ処理が初めてです。簡単なスケジューラとジョブから始めようとしています。しかし、私はb/wの春のバッチとクォーツの仕事を混同しています。私の理解は

Quartz:- quartzは、両方のフレームワーク、つまりスケジューラフレームワークとジョブフレームワークを提供します(春のバッチジョブを使用したくない場合)。正しい ?

Spring Batch:-ジョブフレームワークのみを提供します。春のバッチジョブをスケジュールするために、Quatz schecdulerを使用して常に送信しています。 Springも独自のスケジューラを提供していますか?

14
emilly

Quartzはスケジューリングフレームワークです。 「毎時間または毎月最後の金曜日に何かを実行する」のように

Spring Batchは、実行される「何か」を定義するフレームワークです。ステップで構成されるジョブを定義できます。通常、ステップは、アイテムリーダー、オプションのアイテムプロセッサ、およびアイテムライターで構成されるものですが、カスタムステムを定義できます。 Springバッチに10アイテムごとにコミットするように指示することもできます。

Quartzを使用してSpring Batchジョブを開始できます。

つまり、基本的にSpring Batchは何をすべきかを定義し、Quartzはいつ行うべきかを定義します。

37
Evgeni Dimitrov

この質問の答えは 公式FAQ にあります

Spring BatchはQuartzとどのように異なりますか?

両方のソリューションの場所はありますか? Spring BatchとQuartzの目標は異なります。 Spring Batchは大量のデータを処理する機能を提供し、Quartzはタスクをスケジュールする機能を提供します。したがって、QuartzはSpring Batchを補完できますが、テクノロジーを除外するものではありません。一般的な組み合わせは、Cron式とSpring Coreの利便性SchedulerFactoryBeanを使用して、QuartzをSpring Batchジョブのトリガーとして使用することです。

2
Bartosz Bilicki

Springも独自のスケジューラを提供していますか?

はい、SpringTaskSchedulerを次のように使用します。

 <task:scheduled-tasks>
    <task:scheduled ref="runScheduler" method="run" fixed-delay="5000" />
  </task:scheduled-tasks>

  <task:scheduled-tasks>
    <task:scheduled ref="runScheduler" method="run" cron="*/5 * * * * *" />
  </task:scheduled-tasks>

完全な例

次のようにQuartz Schedulerを使用:

  <!-- run every 10 seconds -->
  <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="jobDetail" />
        <property name="cronExpression" value="*/10 * * * * ?" />
      </bean>
    </property>
  </bean>

完全な例

1
Premraj