我是批处理的新手。我试图从简单的调度程序和工作开始。但我很困惑b / w 春季批次与石英工作。我的理解是
Quartz: - quartz提供了两种框架,即调度程序框架和作业框架(如果我不想使用spring批处理作业)。对吗?
Spring Batch: - 它只提供作业框架。我一直使用Quatz schecduler来安排弹簧批处理作业。 spring也提供自己的调度程序吗?
答案 0 :(得分:31)
Quartz是一个调度框架。比如“每个小时或每个月的每个星期五执行某些事情”
Spring Batch是一个框架,它定义了将要执行的“某些东西”。 您可以定义包含步骤的作业。通常,步骤由项目阅读器,可选项目处理器和项目编写器组成,但您可以定义自定义词干。您还可以告诉Spring批处理每10个项目和许多其他内容。
您可以使用Quartz来启动Spring Batch作业。
所以基本上Spring Batch定义了应该做什么,Quartz定义了何时应该完成。
答案 1 :(得分:2)
official FAQ中有此问题的答案
Spring Batch与Quartz有何不同?
在解决方案中是否都为他们提供了空间? Spring Batch和Quartz具有不同的目标。 Spring Batch提供了用于处理大量数据的功能,而Quartz提供了用于调度任务的功能。因此,Quartz可以补充Spring Batch,但不排除技术。常见的组合是使用Quartz作为使用Cron表达式和Spring Core便捷 SchedulerFactoryBean 的Spring Batch作业的触发器。
答案 2 :(得分:1)
spring是否也提供自己的调度程序?
是的,使用Spring TaskScheduler ,如下所示:
<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>
答案 3 :(得分:0)
Spring Batch:从数据源(数据库中的表,平面文件等)读取数据,然后处理该数据。然后将数据存储在另一个数据源中,并且可以采用其他格式。 我在博客中做了一个tutorial,内容涉及如何集成Spring Boot 2,Spring batch和Quartz。 您可以集成Spring Boot和Spring Batch,并跳过Quartz集成。 Quartz是一个调度程序,可以在将来调度任务,并且它具有自己的元数据表来管理作业状态。