Je suis nouveau dans le traitement par lots. J'essaie de commencer avec un simple ordonnanceur et un emploi. Mais je suis confus b/w Lot de printemps vs travaux de quartz. Ma compréhension est
Quartz: - / quartz fournit les deux cadres: cadre de planificateur et cadre de travail (au cas où je ne souhaite pas utiliser de travaux par lots de printemps). Droite ?
Spring Batch: - Il fournit uniquement le cadre de travail. J'ai toujours envoyé à l'aide de Quatz schecduler pour planifier des travaux par lots de printemps . Spring fournit-il également son propre planificateur?
Quartz est un cadre de planification. Comme "exécuter quelque chose toutes les heures ou tous les derniers vendredi du mois"
Spring Batch est un framework qui définit ce "quelque chose" qui sera exécuté. Vous pouvez définir un travail qui se compose d'étapes. Généralement, une étape consiste en un lecteur d’éléments, un processeur d’éléments et un rédacteur d’éléments facultatifs, mais vous pouvez définir un radical personnalisé. Vous pouvez également dire à Spring batch de s’engager tous les 10 articles et de nombreuses autres choses.
Vous pouvez utiliser Quartz pour démarrer des travaux Spring Batch.
Donc, fondamentalement, Spring Batch définit ce qui doit être fait, Quartz définit ce qui doit être fait.
La réponse à cette question se trouve dans official FAQ
En quoi Spring Batch diffère-t-il de Quartz?
Y a-t-il une place pour les deux dans une solution? Spring Batch et Quartz ont des objectifs différents. Spring Batch fournit des fonctionnalités pour le traitement de gros volumes de données et Quartz fournit des fonctionnalités pour la planification de tâches. Ainsi, Quartz pourrait compléter Spring Batch, mais n'exclut pas les technologies. Une combinaison courante consisterait à utiliser Quartz comme déclencheur d'un travail Spring Batch utilisant une expression Cron et la commodité Spring Core SchedulerFactoryBean.
Est-ce que Spring fournit également son propre programmateur?
Oui, en utilisant Spring TaskScheduler comme suit:
<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>
Avec Quartz Scheduler comme suit:
<!-- 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>