与Quarz相比,SpringMVC提供的任务调度相对简单,通过配置文件即可实现Job的定时调度,但是任务比较多的话,可能不仅涉及到并行,相关联的Job还有串行的需求。
可以通过配置多个task:scheduler 实现并行和串行,以应对复杂一些的Job。
1 <task:scheduler id="schedulerA" pool-size="4" /> 2 <task:scheduled-tasks scheduler="schedulerA"> 3 <task:scheduled ref="jobSchedule1" method="background" cron="0 0 10,22 * * ?" /> 4 <task:scheduled ref="jobSchedule2" method="background" cron="0 0 2,7,19 * * ?" /> 5 <task:scheduled ref="jobSchedule3" method="background" cron="0 */30 * * * ?" /> 6 <task:scheduled ref="jobSchedule4" method="background" cron="0 */30 * * * ?" /> 7 </task:scheduled-tasks> 8 9 <task:scheduler id="schedulerB" pool-size="1" /> 10 <task:scheduled-tasks scheduler="schedulerB"> 11 <task:scheduled ref="jobSchedule1" method="background" cron="0 0 8 * * ?" /> 12 <task:scheduled ref="jobSchedule2" method="background" cron="0 0 8 * * ?" /> 13 <task:scheduled ref="jobSchedule3" method="background" cron="0 */30 * * * ?" /> 14 <task:scheduled ref="jobSchedule4" method="background" cron="0 */30 * * * ?" /> 15 </task:scheduled-tasks>
其中,schedulerA中的4个Job是并行的,schedulerB中的4个Job是串行的,schedulerA整体和schedulerB整体是并行的。