@Bean protected Step step() { return steps.get("step").<Trade, Object> chunk(1).reader(reader()).writer(writer()).faultTolerant() .retry(Exception.class).retryLimit(3).build(); }
@Before public void setUp() { ItemReader<Integer> itemReader = new ListItemReader<>(createItems()); ItemProcessor<Integer, Integer> itemProcessor = item -> item > 20 ? null : item; ItemWriter<Integer> itemWriter = chunk -> { if (chunk.contains(1)) { throw new IllegalArgumentException(); } }; skipPolicy = new SkipIllegalArgumentExceptionSkipPolicy(); stepBuilder = new StepBuilderFactory(jobRepository, transactionManager).get("step") .<Integer, Integer>chunk(CHUNK_SIZE) .reader(itemReader) .processor(itemProcessor) .writer(itemWriter) .faultTolerant(); }
@Bean public Step step1(StepBuilderFactory stepBuilderFactory, ItemReader<String> fakeItemReader, ItemProcessor<String, String> fakeProcessor, ItemWriter<String> fakeItemWriter, ItemProcessListener<String, String> itemProcessListener) { return stepBuilderFactory.get("testStep").<String, String>chunk(10) .reader(fakeItemReader) .processor(fakeProcessor) .writer(fakeItemWriter) .listener(itemProcessListener) .faultTolerant().skipLimit(50).skip(RuntimeException.class) .build(); }
@Override @Bean public Step step(){ return stepBuilders.get("step") .listener(listener()) .<String,String>chunk(2) .reader(reader()) .writer(writer()) .faultTolerant() .skipLimit(1) .skip(MySkippableException.class) // ChunkListener registered twice for checking BATCH-2149 .listener((ChunkListener) listener()) .build(); } }
.processor(itemProcessor) .writer(itemWriter) .faultTolerant() .skip(Exception.class) .skipLimit(3)
@Test public void testAnnotationBasedChunkListenerForFaultTolerantTaskletStep() throws Exception { JobRepository jobRepository = new MapJobRepositoryFactoryBean().getObject(); StepExecution execution = jobRepository.createJobExecution("foo", new JobParameters()).createStepExecution("step"); jobRepository.add(execution); PlatformTransactionManager transactionManager = new ResourcelessTransactionManager(); SimpleStepBuilder<Object, Object> builder = new StepBuilder("step") .repository(jobRepository) .transactionManager(transactionManager) .chunk(5) .reader(new DummyItemReader()) .writer(new DummyItemWriter()) .faultTolerant() .listener(new AnnotationBasedChunkListener()); // TODO should this return FaultTolerantStepBuilder? builder.build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); assertEquals(1, AnnotationBasedChunkListener.beforeChunkCount); assertEquals(1, AnnotationBasedChunkListener.afterChunkCount); }
@Bean public Step step(){ return customStepBuilders().get("step") .faultTolerant() .skipLimit(10) .skip(UnknownGenderException.class) .listener(logSkipListener()) .build(); }
@Bean public Step step1() { return stepBuilderFactory.get("step1") .<String, String>chunk(2) .faultTolerant() .listener(new ChunkListener()) .reader(reader()) .writer(writer()) .build(); }
@Bean public Step step1() { return stepBuilderFactory.get("step") .<String, String>chunk(10) .reader(reader()) .processor(processor(null)) .writer(writer(null)) .faultTolerant() .skip(CustomRetryableException.class) .skipLimit(15) .build(); }
@Bean public Step step1() { return stepBuilderFactory.get("step") .<String, String>chunk(10) .reader(reader()) .processor(processor(null)) .writer(writer(null)) .faultTolerant() .retry(CustomRetryableException.class) .retryLimit(15) .build(); }
@Bean public Step step1() { return stepBuilderFactory.get("step") .<String, String>chunk(10) .reader(reader()) .processor(processor()) .writer(writer()) .faultTolerant() .skip(CustomException.class) .skipLimit(15) .listener(new CustomSkipListener()) .build(); }
@Bean public Step step(){ return stepBuilderFactory.get("step") .<SuggestedPodcast,SuggestedPodcast>chunk(1) //important to be one in this case to commit after every line read .reader(reader(OVERRIDEN_BY_EXPRESSION_VALUE)) .processor(processor()) .writer(writer()) .listener(logProcessListener()) .faultTolerant() .skipLimit(10) //default is set to 0 .skip(Exception.class) .build(); }
@Bean public Step notifySubscribersStep(){ return stepBuilders.get("notifySubscribersStep") .<User,User>chunk(1) //important to be one in this case to commit after every line read .reader(notifySubscribersReader()) .processor(notifySubscribersProcessor()) .writer(notifySubscribersWriter()) .listener(logProcessListener()) .faultTolerant() .skipLimit(10) //default is set to 0 .skip(MySQLIntegrityConstraintViolationException.class) .build(); }
@Bean public Step step(){ return stepBuilders.get("step") .<Partner,Partner>chunk(1) .reader(reader()) .processor(processor()) .writer(writer()) .listener(logProcessListener()) .faultTolerant() .skipLimit(10) .skip(UnknownGenderException.class) .listener(logSkipListener()) .build(); }