我是批处理的新手。我试图从简单的调度程序和作业开始。但是我对b/w spring批处理和quartz作业感到困惑。我的理解是
**Quartz:-**Quartz提供了两个框架,即调度器框架和作业框架(以防我不想使用spring批处理作业)。**Spring Batch:-**它只提供了作业框架。我一直使用Quatz schecduler来调度Spring批处理作业。Spring也提供自己的调度程序吗?
2sbarzqh1#
Quartz是一个调度框架。就像“每个小时或每个月的最后一个星期五执行某件事”Spring Batch是一个框架,它定义了将要执行的“某件事”。你可以定义一个作业,它由步骤组成。通常,一个步骤是由一个条目读取器,一个可选的条目处理器,和一个条目写入器组成的,但是你可以定义一个自定义步骤。你也可以告诉Spring Batch每10个条目提交一次,以及许多其他的东西。您可以使用Quartz启动Spring批处理作业。所以基本上Spring Batch定义了应该做什么,Quartz定义了应该什么时候做。
tkclm6bt2#
官方FAQ中有此问题的答案
Spring Batch与Quartz有何不同?
在一个解决方案中是否有它们的位置?Spring Batch和Quartz有不同的目标。Spring Batch提供处理大量数据的功能,而Quartz提供调度任务的功能。因此Quartz可以补充Spring Batch,一个常见的组合是使用Quartz作为SpringBatch作业的触发器,使用Cron表达式和SpringCore的便利性 *调度器工厂Bean *。
lx0bsm1f3#
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>
full example使用Quartz调度程序,如下所示:
<!-- 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>
full example
tv6aics14#
Spring批次:从数据源读取数据(数据库中的表、平面文件等),处理这些数据。然后将数据存储在另一个数据源中,可能是另一种格式。我在博客中做了一个关于如何集成Spring Boot 2的tutorial,Spring批处理和Quartz。您可以集成Spring启动和Spring批处理,而跳过Quartz集成。Quartz是一个调度器,用于调度将来的任务,它有自己的元数据表来管理作业的状态。
4条答案
按热度按时间2sbarzqh1#
Quartz是一个调度框架。就像“每个小时或每个月的最后一个星期五执行某件事”
Spring Batch是一个框架,它定义了将要执行的“某件事”。你可以定义一个作业,它由步骤组成。通常,一个步骤是由一个条目读取器,一个可选的条目处理器,和一个条目写入器组成的,但是你可以定义一个自定义步骤。你也可以告诉Spring Batch每10个条目提交一次,以及许多其他的东西。
您可以使用Quartz启动Spring批处理作业。
所以基本上Spring Batch定义了应该做什么,Quartz定义了应该什么时候做。
tkclm6bt2#
官方FAQ中有此问题的答案
Spring Batch与Quartz有何不同?
在一个解决方案中是否有它们的位置?Spring Batch和Quartz有不同的目标。Spring Batch提供处理大量数据的功能,而Quartz提供调度任务的功能。因此Quartz可以补充Spring Batch,一个常见的组合是使用Quartz作为SpringBatch作业的触发器,使用Cron表达式和SpringCore的便利性 *调度器工厂Bean *。
lx0bsm1f3#
spring也提供自己的调度程序吗?
是,按如下方式使用SpringTaskScheduler:
full example
使用Quartz调度程序,如下所示:
full example
tv6aics14#
Spring批次:从数据源读取数据(数据库中的表、平面文件等),处理这些数据。然后将数据存储在另一个数据源中,可能是另一种格式。我在博客中做了一个关于如何集成Spring Boot 2的tutorial,Spring批处理和Quartz。您可以集成Spring启动和Spring批处理,而跳过Quartz集成。Quartz是一个调度器,用于调度将来的任务,它有自己的元数据表来管理作业的状态。