Spring Batch 处理器异常监听器?

bde*_*ler 2 spring spring-batch

我有一个分区的 Spring Batch 作业,它读取多个分割的 CSV 文件并在各自的线程中处理每个文件,然后将结果写入相应的输出文件。

如果某个项目无法处理(抛出异常),我想将该结果写入错误文件。有没有办法添加可以处理此问题的编写器或侦听器?

更进一步,有没有一种方法可以按异常类型将其拆分并将不同的异常写入不同的文件?

pvp*_*ran 5

您可以通过指定 来实现这一点SkipPolicy。实现此接口并添加您自己的逻辑。

public class MySkipper implements SkipPolicy {

    @Override
    public boolean shouldSkip(Throwable exception, int skipCount) throws SkipLimitExceededException {

       if (exception instanceof XYZException) {
            //doSomething
       }
         ......
  }
Run Code Online (Sandbox Code Playgroud)

您可以在批次中指定此跳过策略。

this.stepBuilders.get("importStep").<X, Y>chunk(10)
        .reader(this.getItemReader()).faultTolerant().skipPolicy(....)
        .processor(this.getItemProcessor())
        .writer(this.getItemWriter())
        .build();
Run Code Online (Sandbox Code Playgroud)