Spring Batch retry-politique, et passez-la question de la politique de

J'ai, après l'étape de traitement par lots.

    <batch:step id="parse-step">
        <batch:tasklet>
            <batch:chunk reader="xmlCommonReader"
                         processor="xmlCommonProcessor"
                         writer="xmlCommonWriter"
                         commit-interval="1">
                <batch:skip-policy>
                    <bean class="org.springframework.batch.core.step.skip.AlwaysSkipItemSkipPolicy" scope="step"/>
                </batch:skip-policy>
                <batch:retry-policy>
                    <bean class="org.springframework.retry.policy.NeverRetryPolicy" scope="step"/>
                </batch:retry-policy>
            </batch:chunk>
        </batch:tasklet>
        <batch:next on="FAILED" to="file-failed-step"/>
        <batch:next on="COMPLETED" to="file-success-step"/>
        <batch:listeners>
            <batch:listener ref="parseStepExecutionListener"/>
            <batch:listener ref="parseStepSkipListener"/>
        </batch:listeners>
    </batch:step>

Lorsque certains exception jette, je l'attraper en parseStepSkipListener et journal dans la base de données.

J'attends le comportement suivant:

  1. Travail Commencé
  2. L'exécution des étapes précédentes
  3. Lancer l'exécution de analyser étape
  4. Lire l'article
  5. Élément de processus
  6. Écrire
    1. Ooooops, d'exception.
    2. Exception de Catch, ouvrez une session dans la base de données, passez à la partie suivante(Lire, Processus d'Écriture).
  7. Continuer à mettre en œuvre d'autres mesures.
  8. Terminer le travail.

Mais en fait, je reçois comportement suivant:

  1. Travail Commencé
  2. L'exécution des étapes précédentes
  3. Lancer l'exécution de analyser étape
  4. Lire l'article
  5. Élément de processus
  6. Écrire
    1. Ooooops, d'exception.
    2. Élément de processus
    3. Écrire élément
      1. Ooooops, d'exception.
      2. Exception de Catch, ouvrez une session dans la base de données, passez à la partie suivante(Lire, Processus d'Écriture).
  7. Continuer à mettre en œuvre d'autres mesures.
  8. Terminer le travail.

Ainsi, un bloc de données essayer de processus et d'écrire deux fois.

OriginalL'auteur Ruslan | 2014-03-10