java - Spring Batch - Spring Batch Retry 和 backoffPolicy 不起作用
问题描述
我的 Spring 批处理配置如下所示:
@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(10)
.reader(myReader)
.processor(myProcessor)
.writer(myWriter)
.faultTolerant().retryLimit(3).retry(MyException.class)
.build();
}
@Bean
public MyReader myReader() {
return new MyReader();
}
@Bean
public MyProcessor myProcessor() {
return new MyProcessor();
}
@Bean
public MyWriter myWriter() {
return new MyWriter();
}
所以,当我运行我的应用程序时,我在 StepBuilderFactory 上设置的重试不起作用。另外,我想有一个重试的时间间隔。我看到它是通过 backOffPolicy 实现的。我做了一些挖掘并以下列方式实现它
@Bean
public Step step1(ItemReader<String> myReader,
ItemProcessor<String, String> myProcessor,
ItemWriter<String> myWriter) {
return steps.get("step1").<String, String>chunk(10)
.reader(myReader)
.processor(myProcessor)
.writer(myWriter)
.faultTolerant().retryLimit(3).retry(MyException.class)
.backOffPolicy(backoffPolicy())
.build();
}
下面是代码backoffpolicy方法:
@Bean
public BackOffPolicy backoffPolicy() {
ExponentialBackOffPolicy exponentialBackOffPolicy = new ExponentialBackOffPolicy();
exponentialBackOffPolicy.setInitialInterval(1000);
exponentialBackOffPolicy.setMultiplier(2.0);
exponentialBackOffPolicy.setMaxInterval(10000);
return exponentialBackOffPolicy;
}
我重试的主要目的是在我的 ItemReader 中我将调用一个存储过程。因此,如果发生死锁,我想在 n 分钟后重试。我还想重试 ItemWriter 以及它将写入文件。我希望 retry 和 backoffPolicy (以便我可以设置 ItemReader 和 ItemWriter 应该重试的时间间隔)在我的代码上工作。有人可以告诉我我的代码哪里出错了。提前致谢。
解决方案
推荐阅读
- java - 如何制作不需要任何人下载任何东西的软件
- facebook - 将消息发布到墙上时出现权限错误
- html - 带有 ngIf 的错误 ExpressionChangedAfterItHasBeenCheckedError
- angular - 部署到 GitHub 页面后附加到 URL 的附加路由 (Angular)
- linux - 如何在 linux 中将 Crashpad 与我的守护程序应用程序集成?有没有实施指南?
- amazon-web-services - 从 cloudwatch 警报触发 lambda
- python - 二维数组元素替换为区间索引
- asp.net-core - 无法将 http 请求往返于上游
- html - 使 div 根据父级大小增长和缩小
- angularjs - 在angularjs中发送带有%字符的json时出现格式错误的uri错误