web-dev-qa-db-fra.com

Différence entre Step, Tasklet et Chunk dans Spring Batch

Je suis très nouveau dans Spring Batch. Quelqu'un peut-il m'aider à expliquer la différence entre Step, Tasklet et Chunk dans le lot de printemps. J'ai aussi un doute de plus si nous voulons exécuter certaines étapes en parallèle, quelle est la sortie du lot de printemps pour cela.

23
Priyanka Mokashi

Eh bien, c'est en fait une bonne question. Voici un exemple de configuration:

<job id="sampleJob" job-repository="jobRepository">
    <step id="step1" next="step2">
        <tasklet transaction-manager="transactionManager">
            <chunk reader="itemReader" writer="itemWriter" commit-interval="10"/>
        </tasklet>
    </step>
    <step id="step2">
         <tasklet ref="myTasklet"/>
    </step>
</job>

Vous avez un Job, ce job est fait d'étapes. La plupart du temps, ces étapes sont successives. Vous définissez dans quel ordre votre travail doit être effectué avec des étapes: vous effectuez l'étape 1, puis l'étape 2, puis l'étape 3, vous pouvez effectuer l'étape 4 si l'étape 3 a échoué, ou passer directement à l'étape 5, etc.

Ce qui est fait dans l'étape est représenté par un tasklet, ils font la tâche.

Dans le lot de printemps, vous effectuerez principalement un traitement orienté bloc: avec un lecteur, un processeur et un écrivain. De la documentation officielle:

Le traitement orienté morceau se réfère à la lecture des données une à la fois et à la création de "morceaux" qui seront écrits, à l'intérieur d'une frontière de transaction

Mais vous pouvez créer votre propre tasklet et le définir dans votre étape. Par exemple, un tasklet qui exécute une requête SQL. (exemple ici: Tasklet pour supprimer une table dans le lot de printemps )

Ainsi, les étapes sont ordonnées dans un travail, chaque étape contient un tasklet, qui effectue une tâche. L'un de ces tasklet (et probablement le plus utilisé) est le tasklet de traitement orienté bloc.

Si vous êtes curieux, voici le doc de ChunkOrientedTasklet . Comme vous pouvez le voir, il implémente l'interface Tasklet.

Pour plus d'informations: http://docs.spring.io/spring-batch/reference/html/configureStep.html

Et oui, le lot de printemps est bien fait pour le traitement parallèle, en utilisant les flux: http://docs.spring.io/spring-batch/reference/html/scalability.html

39
Asoub