Printemps-lot de flux / split après une étape
Je suis la construction d'un ressort-lot de solution qui contient le processus suivant:
étape 1 : découper une liste en plusieurs listes
étape 2 : processus de chaque sous-liste
étape 3 : la fusion des sous-listes
Générés sous-listes peuvent être traitées en parallèle, et en fonction du printemps-la documentation du lot c'est pris en charge. Malheureusement, je ne peux que trouver spring-batch exemple les emplois qui commencent par étapes, de ne pas les exemples qui commencent de manière séquentielle.
Le travail qui suit ne compilera pas. Le printemps me donne une erreur: "impossible de résoudre l'étape 2,'
<batch:job id="webServiceJob2">
<batch:step id="step1" next="step2"></batch:step>
<batch:split id="step2" next="step3"></batch:split>
<batch:step id="step3"></batch:step>
</batch:job>
Alors, comment puis-je configurer un job d'abord exécuter une seule étape, plutôt que de courir un certain nombre de mesures en parallèle, puis exécutez une dernière étape unique?
OriginalL'auteur lulu | 2013-11-28
Vous devez vous connecter pour publier un commentaire.
J'ai tombé sur ce posant la question sur la façon de split fonctionne, et peut-être que cette réponse arrive un peu (un an) en retard, mais ici, je vais...
La question, il est "split" n'est pas une étape par lui-même, mais vous avez été nommage (et référence) tel qu'il était:
La syntaxe correcte serait:
Mais ce n'est pas ce que vous voulez atteindre, parce que par
split
déclarations, vous avez à mettre dans le temps de compilation du nombre exact des étapes qui seront exécutées, et le but de split est à l'aide de différentes étapes dans chacun des flux au lieu d'appeler plusieurs fois la même.Vous devez vérifier la documentation sur Mise à l'échelle et les processus en Parallèle, le partition étape semble un bon candidat pour votre exigences.
OriginalL'auteur Pablo Lozano
Parallèle mesures indiquent une autre étape pour chaque sous-liste, je ne pense pas qu'est ce que vous voulez.
Un seul Multi-thread Étape semble plus approprié.
Comme indiqué, vous commencez par définir une
TaskExecutor
bean, qui va traiter chaque morceau dans un thread séparé. Depuis TaskExecutors sont assez simples à utiliser, vous pouvez également appeler le TaskExecutor sur votre propre. Dans ce cas, votre étape peut être multi-thread sans Spring Batch avoir besoin de savoir à ce sujet.OriginalL'auteur jaco0646
De sûr, vous pouvez avoir une scission dans le milieu de travail! Voici l'exemple de Spring Batch En Action (2012).
OriginalL'auteur DBK