繁体   English   中英

Spring Batch 错误处理

[英]Spring Batch error handling

我是 Spring Batch 的新手。 我有一份简单的工作,包括读者、处理者、作者和听众。

Step 方法代码示例如下

@Bean public Step step1() { return stepBuilderFactory.get("step1") .<Person, Person> chunk(1) .reader(reader()).listener(customReadItemListener) .processor(processor()).listener(customProcessListener) .writer(writer()).listener(customWriteListener) taskExecutor(taskExecutor()) .build(); }

通过分别覆盖 onReadError、onProcessError 和 onWriteError 处理与 Reader 、 Processor 和 Writer 中的逻辑相关的所有异常。 在这些方法中,我调用了我的自定义 ExceptionService,在那里我处理异常并将我需要的内容写入日志文件。

但是,我遇到了我还无法弄清楚的问题。 在我的作者中,我正在读取属性文件以获取输出文件名。 我的错误处理测试的一部分是将文件名设置为不存在的文件并尝试处理 File Not found 异常。 然而,当我运行测试时,我无法在 customWriteListener 中捕获异常。 我试图添加 StepListener、ChunkListener,但没有一个能够捕获异常并且它被抛出到控制台。 我知道这是系统类型的错误,应该由框架处理。 我的问题是用与处理业务类型异常相同的方式包装它的最佳方法是什么,通过捕获它并调用我的 ExceptionService?

没有你的完整代码,我不知道到底是什么问题,但你可以检查几件事:

  1. 您是否将侦听器声明为组件(@Component)?
  2. 您的侦听器是否实现了 ItemWriteListener、ItemProcessListener 和 ItemReadListener?
  3. 你是否在相应的方法上声明了@OnWriteError、@OnReadError 和 @OnProcessorError?

如果您已经解决了这些问题并在主配置文件中进行了适当的配置,那么这应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM