2014-06-15 13 views
11

a configurare un passo in XML come questo:classi di eccezioni ignorabili per batch di primavera con configurazione basata su java

<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> 

Nella configurazione di Java utilizzare uno StepBuilder come questo:

@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(); 
} 

ma potrei non trovare un modo per configurare le classi di eccezioni ignorabili

risposta

20

È necessario creare un FaultTolerantStepBuilder utilizzando il metodo StepBuilder.faultTolerant.

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

Grazie per questo. Potresti indicarmi dove sono elencate le informazioni? L'ho cercato nei documenti di primavera e non ho trovato alcuna menzione. –

+2

vedere http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/step/builder/StepBuilder.html#chunk-org.springframework.batch.repeat.CompletionPolicy- e http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/step/builder/SimpleStepBuilder.html#faultTolerant--. Ma sinceramente ho trovato questo metodo mentre stavo guardando il codice SB –

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() 
}