如何解决Spring RetryTemplate返回用法
例如,我有一个Spring RetryTemplate配置:
@Configuration
@EnableRetry
public class RetryTemplateConfig {
@Bean
public RetryTemplate retryTemplate() {
SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
retryPolicy.setMaxAttempts(5);
FixedBackOffPolicy backOffPolicy = new FixedBackOffPolicy();
backOffPolicy.setBackOffPeriod(300000);
RetryTemplate template = new RetryTemplate();
template.setRetryPolicy(retryPolicy);
template.setBackOffPolicy(backOffPolicy);
return template;
}
}
@Scheduled(cron = "${schedule.cron.update}")
public void calculate() throws Exception {
log.info("Scheduled started");
try {
retryTemplate.execute(retryContext -> {
myService.work();
return true;
});
} catch (IOException | TemplateException e) {
log.error(e.toString());
}
log.info("Scheduled finished");
}
因此,我在服务类中的方法work()会引发异常:
public void send() throws IOException,TemplateException {
...
}
retryTemplate.execute(retryContext -> {
myService.work();
return true;
});
为什么我可以退回true
,null
,new Object()
和其他东西?它会影响什么并将在哪里使用?我应该退还什么?
解决方法
RetryTemplate执行RetryCallback,这是通用的,可以返回您定义的任何返回类型。
如果您需要从成功执行中获取数据,则可以在回调中将其返回并在以后的流程中获取它
返回: 操作成功的结果。
Example读取文件并重试:
return template.execute(context -> { FileUtils.copyURLToFile(new URL(path),copy); return FileUtils.readFileToString(copy,Charset.defaultCharset());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。