【发布时间】:2021-09-23 17:47:43
【问题描述】:
我正在尝试将弹性 4j 添加到我的应用中以实现指数退避等。
服务
@Component
public class ResilienceService {
private static final String BACKEND_A = "backendA";
public ResilienceService() throws IOException {
testRetry();
}
@Retry(name = BACKEND_A)
public void testRetry() throws IOException {
System.out.println("Hey it's working!");
throw new IOException();
}
}
配置
resilience4j.retry.instances.backendA.maxAttempts=3
resilience4j.retry.instances.backendA.waitDuration=10s
resilience4j.retry.instances.backendA.enableExponentialBackoff=true
resilience4j.retry.instances.backendA.exponentialBackoffMultiplier=2
resilience4j.retry.instances.backendA.retryExceptions[0]=java.io.IOException
我正在尝试查看弹性库是否会调用此函数 3 次。我应该如何考虑正确配置它并测试重试是否实际发生?我以为我可以在方法上放一个断点并看到它调用 3 次,但也许我误解了。
【问题讨论】:
-
1.不要从构造函数中调用它,2. 这不起作用,因为它是一个内部方法调用,并且是使用代理实现的。
标签: java spring spring-boot resilience4j