Spring-Batch跳过异常如何对复合写作者起作用?

问题描述 投票:0回答:1

我使用的是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;
  }


现在,如果在writer1上出现DataIntegrityViolationException,我的skip监听器就会被调用,在那里我做我的日志和 然后再进行下一步的控制

我正在寻找一种方法,控制到下一个作家,目前得到跳过。

java spring spring-batch spring-batch-admin spring-batch-job-monitoring
1个回答
0
投票

这种类型的编排需要通过你自己的合成的 ItemWriter. Spring Batch没有一个开箱即用的组件,可以在单个组件这样的逻辑中处理异常。

© www.soinside.com 2019 - 2024. All rights reserved.