バッチ処理が初めてです。簡単なスケジューラとジョブから始めようとしています。しかし、私はb/wの春のバッチとクォーツの仕事を混同しています。私の理解は
Quartz:- quartzは、両方のフレームワーク、つまりスケジューラフレームワークとジョブフレームワークを提供します(春のバッチジョブを使用したくない場合)。正しい ?
Spring Batch:-ジョブフレームワークのみを提供します。春のバッチジョブをスケジュールするために、Quatz schecdulerを使用して常に送信しています。 Springも独自のスケジューラを提供していますか?
Quartzはスケジューリングフレームワークです。 「毎時間または毎月最後の金曜日に何かを実行する」のように
Spring Batchは、実行される「何か」を定義するフレームワークです。ステップで構成されるジョブを定義できます。通常、ステップは、アイテムリーダー、オプションのアイテムプロセッサ、およびアイテムライターで構成されるものですが、カスタムステムを定義できます。 Springバッチに10アイテムごとにコミットするように指示することもできます。
Quartzを使用してSpring Batchジョブを開始できます。
つまり、基本的にSpring Batchは何をすべきかを定義し、Quartzはいつ行うべきかを定義します。
この質問の答えは 公式FAQ にあります
Spring BatchはQuartzとどのように異なりますか?
両方のソリューションの場所はありますか? Spring BatchとQuartzの目標は異なります。 Spring Batchは大量のデータを処理する機能を提供し、Quartzはタスクをスケジュールする機能を提供します。したがって、QuartzはSpring Batchを補完できますが、テクノロジーを除外するものではありません。一般的な組み合わせは、Cron式とSpring Coreの利便性SchedulerFactoryBeanを使用して、QuartzをSpring Batchジョブのトリガーとして使用することです。
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>