如何使用@Retryable在异常后刷新参数



我有以下代码:

@Retryable(value = ObjectOptimisticLockingFailureException.class, maxAttempts = 10, backoff = @Backoff(delay = 50L))
public void foo(Request request, String status) {
request.setStatus();
// some additional logic
repository.save(request);
}

方法foo是从许多地方调用的。然而,每次发生异常时,我都需要刷新DB中的request。如何配置注释以刷新方法的参数?

为每次重试添加自定义逻辑的最佳方法是注册RetryTemplate

@Bean
public RetryTemplate retryTemplate() {
RetryTemplate retryTemplate = new RetryTemplate();

FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();
fixedBackOffPolicy.setBackOffPeriod(2000l);
retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
retryPolicy.setMaxAttempts(2);
retryTemplate.setRetryPolicy(retryPolicy);
//add policy for wanted exception

return retryTemplate;
}

并使用这个

public void foo(Request request, String status) {
retryTemplate.execute(t -> {
request.setStatus();
// some additional logic
repository.save(request);
});
}

尝试像这样编写@Retryable注释

@Retryable(value = { RetryException.class }, maxAttempts = 4, label="retry API", backoff = @Backoff(delay = 5000))

最新更新