java - 在 Spring Batch 中实现容错
问题描述
我在 Spring Batch 配置中实现了以下批处理作业:
@Bean
public Job myJob(Step step1, Step step2, Step step3) {
return jobs.get("myJob").start(step1).next(step2).next(step3).build();
}
@Bean
public Step step1(ItemReader<String> myReader,
ItemProcessor<String, String> myProcessor,
ItemWriter<String> myWriter) {
return steps.get("step1").<String, String>chunk(1)
.reader(myReader)
.processor(myProcessor)
.writer(myWriter)
.build();
}
我想在某些异常上重试第 1 步(也是第 2 步和第 3 步等),并在任何失败时回滚作业(也在重试之间)。我知道回滚不会是自动的,并且我很清楚在编写自定义代码时每个步骤要回滚什么。
实现这一点的最佳方法是什么?
解决方案
Spring 框架提供了@Retryable 和@Recover 注解来重试和在失败时恢复。你可以查看这篇文章。https://www.baeldung.com/spring-retry
推荐阅读
- r - 计算一段时间后的累积和
- javascript - 如何配置 Vue-CLI 3 以生成没有 JavaScript 的页面?
- python - 具有多个条件和检索值的 Pandas df.loc 索引
- sql - 是否可以基于另一个表生成列?
- python - 为什么 Python 在列表理解中不排除错误
- php - 尝试在 null 上读取属性“total_product_quantity”
- mongodb - Mongo DB 存档无法从 ec2 与 vpc 对等互连
- django - 无法解析相关模型。姜戈,左塞尔
- .net - 使用 Directory.Build.Prop 为 .NET Framework 添加包
- python - 为电报机器人设置速率限制逻辑?