2014-06-15 10 views
11

ich einen Schritt in XML wie folgt konfiguriert werden:Überspringbare Ausnahmeklassen für Spring Batch mit Java-basierte Konfiguration

<batch:step id="slaveStep"> 
     <batch:tasklet> 
      <batch:chunk 
        reader="reader" 
        processor="processor" 
        writer="writer" 
        commit-interval="10" 
        skip-limit="100000"> 
       <batch:skippable-exception-classes> 
        <batch:include class="MyException"/> 
       </batch:skippable-exception-classes> 
      </batch:chunk> 
     </batch:tasklet> 
    </batch:step> 

in der Java-Konfiguration verwende ich eine StepBuilder wie folgt aus:

@Bean 
public StepBuilder stepBuilder(String stepName) 
{ 
    return new StepBuilder(stepName); 
} 

@Bean 
Step slaveStep() 
{ 
    return stepBuilder("slaveStep") 
      .<Movie, Movie>chunk(10) 
      .reader(reader(new HashMap<>())) 
      .processor(processor()) 
      .writer(writer()) 
      .build(); 
} 

Aber ich konnte finden Sie keine Möglichkeit, die überspringbaren Ausnahmeklassen zu konfigurieren

Antwort

20

Sie müssen eine FaultTolerantStepBuilder mit StepBuilder.faultTolerant Methode erstellen.

return stepBuilder() 
    .chunk() 
    .faultTolerant() 
    .skip(MyException.class) 
    .skipLimit(100000) 
.build() 
+0

Dank dafür. Könnten Sie mir zeigen, wo diese Informationen aufgelistet sind? Ich habe im Frühjahr nach Dokumenten gesucht und konnte keine Erwähnung finden. –

+2

siehe http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/step/builder/StepBuilder.html#chunk-org.springframework.batch.repeat.CompletionPolicy- and http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/step/builder/SimpleStepBuilder.html#faultTolerant--. Aber ehrlich gesagt fand ich diese Methode, während ich auf SB-Code schaute –

1
@Configuration 
@EnableBatchProcessing 
@Import(DataConfig.class) 
    public class SpringBatchConfig { 
    .................. 
    .................. 
    @Autowired 
    private StepBuilderFactory stepBuilders; 

    @Bean 
    public Step loadSlaveStep() 
     return stepBuilders.get("slaveStep")() 
     .chunk() 
     .faultTolerant() 
     .skip(MyException.class) 
     .skipLimit(100000) 
     .build() 
} 
Verwandte Themen