@Retryable 未被触发
@Retryable is not being triggered
我已经尝试归纳出最简单的重试场景。执行时将忽略重试。
Application.java:
@SpringBootApplication
@EnableRetry
public class Application extends SpringBootServletInitializer {
//...
这是在服务中 class:
public Boolean processItem() {
Long id = 999L;
try {
retrieveItemWithRetry(id);
return true;
} catch (NoResultException e) {
return false;
}
}
@Retryable(include=NoResultException.class, backoff = @Backoff(delay = 500, maxDelay = 3000), maxAttempts = 5)
private void retrieveItemWithRetry(Long id) {
retrieveItem(id);
}
private OrderRequest retrieveItem(Long id) {
throw new NoResultException();
}
对 @Retryable
方法的内部调用(在同一个 class 中)不可重试;参见昨天的,这解释了原因。
此外,@Retryable
方法必须是 public。
我已经尝试归纳出最简单的重试场景。执行时将忽略重试。
Application.java:
@SpringBootApplication
@EnableRetry
public class Application extends SpringBootServletInitializer {
//...
这是在服务中 class:
public Boolean processItem() {
Long id = 999L;
try {
retrieveItemWithRetry(id);
return true;
} catch (NoResultException e) {
return false;
}
}
@Retryable(include=NoResultException.class, backoff = @Backoff(delay = 500, maxDelay = 3000), maxAttempts = 5)
private void retrieveItemWithRetry(Long id) {
retrieveItem(id);
}
private OrderRequest retrieveItem(Long id) {
throw new NoResultException();
}
对 @Retryable
方法的内部调用(在同一个 class 中)不可重试;参见昨天的
此外,@Retryable
方法必须是 public。