春季批处理 跳过异常如何适用于复合编写器



我正在使用Spring Batch,我的步骤配置如下:

@Bean
public Step testStep(
JdbcCursorItemReader<TestStep> testStageDataReader,
TestStepProcessor testStepProcessor,
CompositeItemWriter<Writer> testWriter,
PlatformTransactionManager transactionManager,
JobRepository jobRepository) {
return stepBuilderFactory
.get("TESTING")
.<>chunk(100)
.reader(testStageDataReader)
.processor(testStepProcessor)
.writer(testWriter)
.faultTolerant()
.skip(DataIntegrityViolationException.class)
.skipLimit(1)
.listener(new SkipTestListener())
.transactionManager(transactionManager)
.repository(jobRepository)
.build();
}

我的复合项编写器


@Bean
public CompositeItemWriter<Writer> testWriter(
Writer1 writer1,
Writer2 writer2,
Writer3 writer3)
throws Exception {
List<ItemWriter<? super Writer>> writers = new ArrayList<>();
writers.add(writer1);
writers.add(writer2);
writers.add(writer3);
CompositeItemWriter<Writer> writers = new CompositeItemWriter<>();
workingWellDailyMemberAggWriter.setDelegates(writers);
workingWellDailyMemberAggWriter.afterPropertiesSet();
return writers;
}

现在,如果编写器1上存在数据完整性违规异常,则会在我进行日志记录的地方调用我的跳过侦听器,然后控制进入下一步

我正在寻找一种将控制权交给当前被跳过的下一个作家的方法

这种类型的编排需要通过您自己的复合ItemWriter来完成。Spring Batch 没有一个开箱即用的组件来处理像这样的单个组件逻辑中的异常。

相关内容

  • 没有找到相关文章

最新更新